一般来说,语法:
for k, v in pairs(t) do
....
end
相当于:
for k, v in next, t do
....
end
但是,如果t
有一个__pairs
元方法呢? 标准next()
功能会检查这一点吗? 如果不是,在迭代表时始终使用 pairs
,而从不直接调用next()
不是更好吗?
不,next()
不检查__pairs
。手册没有这么说。
可以从相关源代码中双重确认,比较luaB_pairs
和luaB_next
。
有时您可能不想检查元方法__pairs
那么为什么说总是使用pairs
而不是next
呢?