Sil*_*ler 8 lua metatable meta-method
一般来说,语法:
for k, v in pairs(t) do
....
end
Run Code Online (Sandbox Code Playgroud)
相当于:
for k, v in next, t do
....
end
Run Code Online (Sandbox Code Playgroud)
但如果t有一个__pairsmetamethod怎么办?标准next()功能会检查这个吗?如果没有,那么在迭代表时总是使用pairs并且从不next()直接调用是不是更好?
不,next()不检查__pairs.手册没有这么说.
它可以从相关的源代码中进行双重确认,比较luaB_pairs和luaB_next.
有可能是时候,你并不需要检查__pairs元方法,所以为什么说始终使用pairs过next?