标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的
(string.gmatch)等等。LUA手册中对与pairs,ipairs解释如下:
ipairs (t)
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 (t)
Returns three values: the next
function,and nil,255)">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以及pairs 的不同。
pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key
[cpp] view plain copy print ? @H_419_76@ 下面举个例子吧! eg: local tabfiles = { [3] = "test2", [6] = "test3", [4] = "test1" } for k, v in ipairs(tabfiles) do print(k, v) end 猜测它的输出结果是什么呢? 根据刚才的分析,它在 ipairs(tabfiles) 遍历中,当key=1时候value就是nil,所以直接跳出循环不输出任何值。 >lua -e "io.stdout:setvbuf 'no'" "Test.lua" >Exit code: 0 那么,如果是 do print(k, v) end 则会输出所有 : >lua -e "io.stdout:setvbuf 'no'" "Test.lua" 3 test2 6 test3 4 test1 >Exit code: 0 现在改变一下表内容, local tabfiles = { [1] = "test1",108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:20px; Font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> [6] = "test2",248)"> [4] = "test3" } 现在的输出结果显而易见就是key=1时的value值test1 >lua -e "io.stdout:setvbuf 'no'" "Test.lua" 1 test1 >Exit code: 0 --[示例1.]-- local tt = { [1] = "test3",108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:20px; Font-size:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> [4] = "test4",248)"> [5] = "test5" for i,v in pairs(tt) do -- 输出 "test4" "test3" "test5" print( tt[i] ) do -- 输出 "test3" k=2时断开 -- [[示例2.]] -- tbl = {"Alpha", "beta", [3] = "uno", ["two"] = "dos"} do --输出前三个 print( tbl[i] ) do --全部输出 end
http://www.voidcn.com/article/p-hanqmlxa-dy.html
总结以上是内存溢出为你收集整理的lua 中pairs 和 ipairs区别全部内容,希望文章能够帮你解决lua 中pairs 和 ipairs区别所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)