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

时间:2015-04-11 16:07:48

标签: lua metatable meta-method

一般来说,语法为:

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

相当于:

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

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

1 个答案:

答案 0 :(得分:5)

不,next()不会检查__pairsThe manual并未这样说。

可以从相关的源代码中进行双重确认,比较luaB_pairsluaB_next

有时您想要检查__pairs元方法,为什么说总是使用pairs而不是{{ 1}}?