今天看到一个帖子,是关于lua优化的,上面说清空一个表的时候,pairs的效率是next的500倍。
我记得for pairs循环实际上就是调用的就是next,还特意查了源码,应证了我的记忆。
源码就不贴了,直接给结论。
for k, v in pairs(tbl) do
end
基本等同于
for k, v in next, tbl, nil do
end
pairs(tbl)返回三个值,称为迭代方法(源码注释中为generator)、状态和初始值。
而实际上这个三个值便是next,tbl和nil。
第一次循环,将tbl和nil传入next方法,返回k和v(如果是空表,返回nil,中断循环)。