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