Lua语法小贴士(十六)pairs和next
来源:互联网 发布:咫尺网络微官网 编辑:程序博客网 时间:2024/06/05 16:08
今天看到一个帖子,是关于lua优化的,上面说清空一个表的时候,pairs的效率是next的500倍。
我记得for pairs循环实际上就是调用的就是next,还特意查了源码,应证了我的记忆。
源码就不贴了,直接给结论。
for k, v in pairs(tbl) doend
基本等同于
for k, v in next, tbl, nil doend
pairs(tbl)返回三个值,称为迭代方法(源码注释中为generator)、状态和初始值。
而实际上这个三个值便是next,tbl和nil。
第一次循环,将tbl和nil传入next方法,返回k和v(如果是空表,返回nil,中断循环)。
第二次循环,将tbl和k传入next方法,返回新的k和v(如果是空表,返回nil,中断循环)。
……
ipairs与之类似,只不过ipairs返回的迭代方法是一个没有暴露出来的方法,而初始值是0。
第一次循环,将tbl和i(初始值0)传入迭代方法,i++,然后用rawgeti获取第一个值v,返回i和v(如果是空表,直接返回,中断循环)。
第二次循环,将tbl和i(当前值1)传入迭代方法,i++,然后用rawgeti获取第二个值v,返回i和v(如果是空表,直接返回,中断循环)。
……
因为帖子没有给出代码,我也不敢武断的就说对方是错的。但是我认为,没有上下文的情况下,对方直接给出pairs比next快很多的结论也是有很大问题的。
阅读全文
0 0
- Lua语法小贴士(十六)pairs和next
- 【Lua】pairs 和 ipairs
- lua pairs和ipairs区别
- lua中的pairs和ipairs
- Lua -- pairs和ipairs区别
- LUA中pairs和ipairs的区别(收藏)
- Lua语法小贴士(十二)loadstring和loadfile
- 【LUA学习】ipairs和pairs的区别
- Lua中 Pairs和ipairs的区别
- lua 中pairs 和 ipairs区别
- lua ipairs和pairs的区别 .
- lua 循环pairs 和 ipairs区别
- lua 中pairs 和 ipairs区别
- lua 中pairs 和 ipairs区别
- lua 中pairs 和 ipairs区别
- lua中pairs和ipairs的比较
- lua 中pairs 和 ipairs区别
- lua 中pairs 和 ipairs区别
- Spring动态切换多数据源解决方案
- LDAP
- ligerui 表格中设置单元格不可编辑,添加行,删除行
- Visual Studio Code v1.16发布
- Spring MVC重定向参数传递
- Lua语法小贴士(十六)pairs和next
- SQL数据库安装
- C++多态的概念以及用途
- ubuntu for AM5728
- android网络调试工具Stetho介绍
- 短实习---Java面向对象(练习题)
- 51nod 1289 大鱼吃小鱼
- 仿中国比特币首页趋势图,折线图,k线图
- HDU