next()函数是否会寻找__pairs元方法?

8

一般来说,语法如下:

for k, v in pairs(t) do
   ....
end

等同于:

for k, v in next, t do
    ....
end

但是如果t有一个__pairs元方法呢?标准的next()函数会检查这个吗?如果不会,那么在迭代表时是否最好始终使用pairs,而不直接调用next()

1个回答

5
不,next() 不会检查 __pairs 。从手册中可以看出这一点。相关源代码也可以进行双重确认,比较 luaB_pairsluaB_next
有时您可能不想检查 __pairs 的元方法,那么为什么要说总是使用 pairs 而不是 next

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接