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

通常情况下,以下语法:

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

等同于:

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

但是如果 t__pairs 元方法会怎么样呢?标准的 next() 函数会检查这个吗?如果不是,那么在迭代表时总是使用 pairs,而不是直接调用 next(),这样岂不是更好?

点赞
用户1009479
用户1009479

不,next()不会检查__pairs手册没有这样说。

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

有时候您可能不想检查__pairs元方法,那么为什么要说始终使用pairs而不是next呢?

2015-04-11 16:42:08