一般来说,语法为:
for k, v in pairs(t) do
....
end
相当于:
for k, v in next, t do
....
end
但如果t
有一个__pairs
元方法怎么办?标准next()
函数会检查这个吗?如果没有,那么在迭代表时始终总是使用pairs
是不是更好,而不是直接调用next()
?
答案 0 :(得分:5)
不,next()
不会检查__pairs
。 The manual并未这样说。
可以从相关的源代码中进行双重确认,比较luaB_pairs
和luaB_next
。
有时您不想要检查__pairs
元方法,为什么说总是使用pairs
而不是{{ 1}}?