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()
不检查 __pairs
。 The manual 没这么说。
可以从相关源码中双重确认,对比luaB_pairs
and luaB_next
.
有时您不想检查__pairs
元方法,所以为什么说总是使用pairs
超过 next
?
一般来说,语法:
for k, v in pairs(t) do
....
end
相当于:
for k, v in next, t do
....
end
但是如果 t
有一个 __pairs
元方法呢?标准 next()
函数会检查这个吗?如果不是,在迭代表时 总是 使用 pairs
并且从不直接调用 next()
不是更好吗?
不,next()
不检查 __pairs
。 The manual 没这么说。
可以从相关源码中双重确认,对比luaB_pairs
and luaB_next
.
有时您不想检查__pairs
元方法,所以为什么说总是使用pairs
超过 next
?