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