next()是否会寻找__pairs元方法?

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()直接调用是不是更好?

Yu *_*Hao 5

不,next()不检查__pairs.手册没有这么说.

它可以从相关的源代码中进行双重确认,比较luaB_pairsluaB_next.

有可能是时候,你并不需要检查__pairs元方法,所以为什么说始终使用pairsnext