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

Does next() look for a __pairs metamethod?

一般来说,语法:

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

相当于:

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

但是如果 t 有一个 __pairs 元方法呢?标准 next() 函数会检查这个吗?如果不是,在迭代表时 总是 使用 pairs 并且从不直接调用 next() 不是更好吗?

不,next() 不检查 __pairsThe manual 没这么说。

可以从相关源码中双重确认,对比luaB_pairs and luaB_next.

有时您不想检查__pairs元方法,所以为什么说总是使用pairs 超过 next?