pairs和ipairs的区别(代码片段)

Flytiger1220 Flytiger1220     2022-12-09     205

关键词:

在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别;

同:都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;

异:对于有key的集合:
ipairs从第一个数字key开始,依次输出所有的key+1的键值,遇到字母下标并不会结束遍历,只是不输出而已,如果遇到nil则退出;
pairs无序输出字母类型key或者数字类型key的键值,遇到nil不输出,但不会停止遍历;

例子1:

table =  [1] = "test3", [2] = "val1" , [5] = "val2", [4] = "val4" 
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	test3
2	val1
-----------pairs----------------
4	val4
1	test3
2	val1
5	val2

结论:
1、ipairs会按照key的顺序输出数据,遇到不连续的数据停止输出;
2、pairs会无序输出所有数据;

例子2:

table =  [3] = "test3", ["test"] = "val1", "val3" , [4] = "val2", "val4" 
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	val3
2	val4
3	test3
4	val2
-----------pairs----------------
1	val3
2	val4
4	val2
test	val1
3	test3

结论:
1、pairs和ipairs均优先输出没有key的value;
2、pairs会输出所有的数据,不带key的值按顺序输出,带key的值无序输出;
3、ipairs会跳过字符串的key,按顺序输出数字型key的值;

例子3

table =  [6] = "test3", ["test"] = "val1", "val3" , [11] = "val2", nil, "val4" 
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	val3
-----------pairs----------------
1	val3
3	val4
11	val2
6	test3
test	val1

结论:
1、ipairs遇到nil会停止输出;
2、pairs遇到nil不会停止输出;

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... 查看详情

Lua中pairs()和ipairs()的区别是啥?

】Lua中pairs()和ipairs()的区别是啥?【英文标题】:Whatisthedifferenceofpairs()vs.ipairs()inLua?Lua中pairs()和ipairs()的区别是什么?【发布时间】:2019-08-0204:14:17【问题描述】:在for循环中,使用pairs()和ipairs()循环有什么区别?此页面同时使... 查看详情

pairs和ipairs异同(代码片段)

 同:都是能遍历集合(表、数组)异:ipairs仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到集合中出现的第一个不是整数的key。pairs能遍历集合的所有... 查看详情

lua中pairs和ipairs的区别

主要在有key为整数的时候有区别.注意数组默认的下标从1开始,比如a={"a","b","c","d"},和a={[1]="a",[2]="b",[3]="c",[4]="d"}是一样的.locala={"a","b","c","d"}fork,vinpairs(a)doprint(k,v)end所以ipair和pairs的结果都是1   a2   查看详情

lualua中ipair和pair的区别

pairs会遍历table的所有键值对。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integerkey值从1开始遍历的。请看个例子。tb={"oh",[3]="god","my",[... 查看详情

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",再... 查看详情

第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特性

...类型: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,不能 查看详情

c++pair用法(代码片段)

pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。 1 pair的应用pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair。(1)STL中的map就是将key和value放在一起来保存... 查看详情

只有两个成员的 std::pair 和 std::tuple 之间的区别?

】只有两个成员的std::pair和std::tuple之间的区别?【英文标题】:Differencebetweenstd::pairandstd::tuplewithonlytwomembers?【发布时间】:2011-10-0422:50:54【问题描述】:std::pair和只有两个成员的std::tuple之间有区别吗?(除了std::pair需要两个而... 查看详情

c++pair的基本用法总结(代码片段)

C++pair的基本用法总结1,pair的应用pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。pair的实现... 查看详情

c++22map容器(代码片段)

...。⑤map容器可以根据key值快速找到value值。⑥map和multimap区别:map不允许容器中有重复key值元素。mutimap运行容器中有重复的key值元素。1.2pair对组的创建①功能描述:成对出现的数据,利用对组可以返回两个数据。②两... 查看详情

zeromq_10节点协调(代码片段)

...节点断开连接后又进行重连,PAIR不会予以理会。第二个区别在于,线程的数量一般是固定的,而节点数量则会经常变化。让我们以气象信息模型为基础,看看要怎样进行节点的协调,以保证客户端不会丢失最开始的那些消息。... 查看详情

stl中pair容器的用法(代码片段)

1、定义pair容器1pair<int,int>p,p1;2//定义[int,int]型容器//直接初始化了p的内容pair<string,int>p(1,5);定义一个pair类型数组pair<int,int>p1[maxn] 2、交换函数//p和p1都是pair容器p.swap(p1);//交换两个容器的内容//例:p=1,2,p1=3,4 查看详情

lua教程

...达式Lua中的语句Lua中的函数Lua中的闭包Lua中pairs和ipairs的区别Lua中的迭代器与泛型forLua中的协同程序Lua中__index和__newindex实践Lua中的元表与元方法Lua中的环境概念Lua中的模块与包Lua中的面向对象编程Lua中的一些库(1)Lua中的一些... 查看详情

lua笔记——4.环境environment(代码片段)

...了标准库比如math、函数比如pairs、ipairs等,可以使用以下代码打印当前环境中所有全局变量的名称:forninpairs(_G)doprint(n)en 查看详情

stlstd::pair基本用法(代码片段)

std::pair是一个结构体模板,其可于一个单元内存储两个相异对象。是std::tuple的拥有两个元素的特殊情况。一般来说,pair可以封装任意类型的对象,可以生成各种不同的std::pair<T1,T2>对象,可以是数组对象或者包含std::pair<T1... 查看详情