关键词:
主要在有key为整数的时候有区别.
注意数组默认的下标从1开始,比如a={"a","b","c","d"},和a={[1]="a",[2]="b",[3]="c",[4]="d"}是一样的.
local a = { "a","b","c","d" } for k, v in pairs(a) do print(k, v) end
所以ipair和pairs的结果都是
1 a
2 b
3 c
4 d
但是如果数组中的key和从1开始数的key不相同的话,或者是非整数,ipairs就此break,pairs不受影响.
local a = { "a",[2]="b",[4]="c",[5]="d" } for k, v in pairs(a) do print(k, v) end
pairs输出
1 a
2 b
4 c
5 d
ipairs输出
1 a
2 b
应为"c"的key不是3,所以就中断了
以及
for k,v in pairs(a) do print(k,v) end
也不会输出的
还有一点需要注意的是,数组的自动排序功能
如果改成这样
local a = { "a",[2]="b",[4]="c","d" } for k, v in pairs(a) do print(k, v) end
pairs输出
1 a
2 d
4 c
因为自动排序,先按照没key的给默认key,所以就变成{[1]="a",[2]="d",[2]="b",[4]="c"}
前面的[2]="d"会移除掉后面的,[2]="b",所以没有输出b
如果是pairs
1 a
2 d
应为[2]="b"被移除,[4]="c"不等于3,所以只输出
1 a
2 d
lua中,泛型for循环遍历table时,ipairs和pairs的区别(代码片段)
为了看出两者的区别,首先定义一个table: a="Hello","World";a=1,b=2,z=3,x=10,y=20;"Good","Bye"使用ipairs对其进行遍历: fori,vinipairs(a)doprint(v)end输出的结果是:HelloWorldGoodBye可见ipairs并不会输出table中存储的键值对,会跳过键值对,然... 查看详情
lua中ipairs和pairs的区别详解(代码片段)
迭代器for遍历table时,ipairs和pairs的区别:区别一:ipairs遇到nil会停止,pairs会输出nil值然后继续下去区别二:locala="Hello","World",a=1,b=2,x=10,y=20,"Good",nil,"Bye"--fori,vinipairs(a)do--print(v)--endfork,vinpairs(a)doprint(k,v)end可见:ipairs并不会输出ta... 查看详情
pairs和ipairs的区别(代码片段)
在lua中ipairs和pairs均可以用来遍历集合,但是两者有区别;同:都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;异:对于有key的集合:ipairs从第一个数字key开始,依次输... 查看详情
ipairs与pairs的区别
ipairs和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale而ipairs会依据key的数值从1開始加1递增遍历相应的table[i]值如:table1=key1="val1",key2="val2","val3"pairs会优先输出没有键的值,即先输出"val3",再... 查看详情
lualua中ipair和pair的区别
pairs会遍历table的所有键值对。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integerkey值从1开始遍历的。请看个例子。tb={"oh",[3]="god","my",[... 查看详情
lua特性
...类型:nil,boolean,number,string,userdata,function,table;5.pairs和ipairs区别:pairs:迭代table,遍历表中所有的KEY,可以返回nil;ipairs:迭代数 查看详情
lua中易混淆函数
lua中易混淆的函数ipairs和pairs:ipairs只能顺序遍历table,遇到key不是数字就会退出pairs可以遍历table中所有元素---------------------------------------------------------------------pcall和xpcallpcall格式:pcall(function,...)运行函数返回true或false,不能 查看详情
lua教程
...达式Lua中的语句Lua中的函数Lua中的闭包Lua中pairs和ipairs的区别Lua中的迭代器与泛型forLua中的协同程序Lua中__index和__newindex实践Lua中的元表与元方法Lua中的环境概念Lua中的模块与包Lua中的面向对象编程Lua中的一些库(1)Lua中的一些... 查看详情
pairs和ipairs异同(代码片段)
同:都是能遍历集合(表、数组)异:ipairs仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到集合中出现的第一个不是整数的key。pairs能遍历集合的所有... 查看详情
第9月第26天pairs和ipairs
1.a={ip="127.0.0.1",port=6789}fori,vinpairs(a)doprint(i,v)end a={1}fori,vinipairs(a)doprint(i,v)endhttp://blog.csdn.net/witch_soya/article/details/7556595 查看详情
lua语言中是不是可以在table中存储函数
... do -- ipairs 和 pairs 的区别在于index是否为连续整数 print(v)end参考技术A可以用数字下标放但我们更常用的方法是以字符串做下标lo 查看详情
lua笔记——4.环境environment(代码片段)
...Lua在全局环境_G中添加了标准库比如math、函数比如pairs、ipairs等,可以使用以下代码打印当前环境中所有全局变量的名称:forninpairs(_G)doprint(n)en 查看详情
lua中.和:的区别(代码片段)
lua中.和:的区别首先在lua中使用“:”定义的函数会自动传入一个名为self的变量,这个变量是隐含的,self同c++中的this一样,表示当前对象的指针:而“.”定义的函数中没有self。functionclass:func2()endfunctionclass.f... 查看详情
只有两个成员的 std::pair 和 std::tuple 之间的区别?
】只有两个成员的std::pair和std::tuple之间的区别?【英文标题】:Differencebetweenstd::pairandstd::tuplewithonlytwomembers?【发布时间】:2011-10-0422:50:54【问题描述】:std::pair和只有两个成员的std::tuple之间有区别吗?(除了std::pair需要两个而... 查看详情
lua中调用函数使用点号和冒号的区别
...种形式,是让我们随便挑的意思吗? 这两种形式是有区别的,区别很大,但只有一个。不过,暂时不解释,后面再介绍。2.最简单 查看详情
lua中local变量和非local变量的区别
示栗代码:localmyClass={m=10,n=11}functionmyClass:new()localself={}setmetatable(self,{__index=myClass})returnselfendlocala=0localb=0localc=0myClass.a=1myClass.b=2myClass.c=3a=4b=5c=6d=7e=8f=9print(myClass. 查看详情
andlua和lua的区别
参考技术Aandlua就是一个不错的脚本编辑器,它上面可以直接运行代码的,还可以对你写的程序进行测试,专为开发人员打造的,里面还能为你提供新手教程说明书。lua。Lua是一个小巧的脚本语言。它是巴西里约热内卢天主教大... 查看详情
面试中常被问到(25)map和pair区别
1,pair的类型:pair是一种模版类型。每个pair可以存储两个值。这两种值的类型没有限制,也可以自定义类型。2、pair应用:如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果... 查看详情