lualua中ipair和pair的区别

秋乡暮雨的学习笔记 秋乡暮雨的学习笔记     2022-08-06     622

关键词:

pairs会遍历table的所有键值对。

而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integer key值从1开始遍历的。

请看个例子。

tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}

for k,v in ipairs(tb) do
     print(k, v)
end

输出结果就是:

1       oh
2       my
3       god

因为tb不存在tb[4],所以遍历到此为止了。

for k,v in pairs(tb) do
     print(k, v)
end

输出结果:

1       oh
2       my
3       god
6       world
5       hello

我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。
如果我们要按顺序输出怎么办?办法之一是:

for i = 1, #tb do
     if tb[i] then
          print(tb[i])
     else
end

当然,仅仅是个数组的话,ipairs也没问题。

 

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

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

在lua中ipairs和pairs均可以用来遍历集合,但是两者有区别;同:都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;异:对于有key的集合:ipairs从第一个数字key开始,依次输... 查看详情

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

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

pairs和ipairs异同(代码片段)

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

lua教程

...些库(2)Lua中字符串库中的几个重点函数Lua与CC“控制”LuaLua“控制”C再说C模块的 查看详情

lua特性

...类型:nil,boolean,number,string,userdata,function,table;5.pairs和ipairs区别:pairs:迭代table,遍历表中所有的KEY,可以返回nil;ipairs:迭代数 查看详情

第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中易混淆函数

lua中易混淆的函数ipairs和pairs:ipairs只能顺序遍历table,遇到key不是数字就会退出pairs可以遍历table中所有元素---------------------------------------------------------------------pcall和xpcallpcall格式:pcall(function,...)运行函数返回true或false,不能 查看详情

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

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

面试中常被问到(25)map和pair区别

1,pair的类型:pair是一种模版类型。每个pair可以存储两个值。这两种值的类型没有限制,也可以自定义类型。2、pair应用:如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果... 查看详情

std::map的insert和下标[]操作区别

...术Ainsert和下标操作都可以用来添加元素,但是两者也有区别。insert接受一个pair参数,并且返回一个pair,以std::map<int,int>为例,其返回值是一个std::pair<std::map<int,int>::iterator,bool>,如果数据插入成功(key不存在)则返... 查看详情

lua语言中是不是可以在table中存储函数

... do    -- ipairs 和 pairs 的区别在于index是否为连续整数    print(v)end参考技术A可以用数字下标放但我们更常用的方法是以字符串做下标lo 查看详情

iterator和generator之间的区别是啥

这个问题分类有误,应该标记为计算机、程序。引用一段大神的介绍:迭代器EDIT迭代器是一个对象,知道如何存取物品从一个集合一次取出一项, 而跟踪它的当前序列所在的位置。在 JavaScript中迭代器是一个对象,它提... 查看详情

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

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

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

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

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