Lua中ipairs()和pairs()的区别与使用
来源:互联网 发布:整站下载html5源码 编辑:程序博客网 时间:2024/05/16 02:48
关于ipairs()和pairs(),Lua官方手册是这样说明的:
pairs (t)
If t
has a metamethod __pairs
, calls it with t
as argument and returns the first three results from the call.
Otherwise, returns three values: the next
function, the table t
, and nil, so that the construction
for k,v in pairs(t) do body end
will iterate over all key–value pairs of table t
.
See function next
for the caveats of modifying the table during its traversal.
ipairs (t)
If t
has a metamethod __ipairs
, calls it with t
as argument and returns the first three results from the call.
Otherwise, returns three values: an iterator function, the table t
, and 0, so that the construction
for i,v in ipairs(t) do body end
will iterate over the pairs (1,t[1]
), (2,t[2]
), ..., up to the first integer key absent from the table.
根据官方手册的描述,pairs会遍历表中所有的key-value值,而ipairs会根据key的数值从1开始加1递增遍历对应的table[i]值,直到出现第一个不是按1递增的数值时候退出。
下面我们以例子说明一下吧
stars = {[1] = "Sun", [2] = "Moon", [5] = 'Earth'}
for i, v in pairs(stars) do
print(i, v)
end
使用pairs()将会遍历表中所有的数据,输出结果是:
1 Sun
2 Moon
5 Earth
如果使用ipairs()的话,
for i, v in ipairs(stars) do
print(i, v)
end
当i的值遍历到第三个元素时,i的值为5,此时i并不是上一个次i值(2)的+1递增,所以遍历结束,结果则会是:
1 Sun
2 Moon
ipairs()和pairs()的区别就是这么简单。
还有一个要注意的是pairs()的一个问题,用pairs()遍历是[key]-[value]形式的表是随机的,跟key的哈希值有关系。看以下这个例子:
stars = {[1] = "Sun", [2] = "Moon", [3] = "Earth", [4] = "Mars", [5] = "Venus"}
for i, v in pairs(stars) do
print(i, v)
end
结果是:
2 Moon
3 Earth
1 Sun
4 Mars
5 Venus
并没有按照其在表中的顺序输出。
但是如果是这样定义表stars的话
stars = {"Sun", "Moon", “Earth”, "Mars", "Venus"}
结果则会是
1 Sun
2 Moon
3 Earth
4 Mars
5 Venus
你清楚了吗?:)
- Lua中ipairs()和pairs()的区别与使用
- Lua中 Pairs和ipairs的区别
- Lua中pairs和ipairs的区别
- LUA中ipairs和pairs的区别
- LUA中pairs和ipairs的区别
- 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区别
- lua 中pairs 和 ipairs区别
- lua 中pairs 和 ipairs区别
- 转 lua 中pairs 和 ipairs区别
- js弹出框、对话框、提示框、弹窗总结
- Sorting&Searching 旋转数组二分法查找 @CareerCup
- ubuntu 环境变量配置 并立即生效
- 自拍达人2
- struts2 login登陆
- Lua中ipairs()和pairs()的区别与使用
- flex自定义组件(mxml文件)
- Memcached变种产品介绍
- as3.0 中get 和 set方法
- Webservice Axis2 Myeclipse
- SQL SERVER跨数据库查询
- Cscope安装
- 通过adb shell操作android真机的SQLite数据库
- 通过网络文件系统NFS