一般来说,语法如下:
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
而不是 next
?