关键词:
同:都是能遍历集合(表、数组)
异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。
pairs 能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil
例子
local tabFiles = [1] = "test2", [6] = "test3", [4] = "test1" for k, v in ipairs(tabFiles) do --输出"test2",在key等于2处断开 print(k, v) end
例子
local tabFiles = [2] = "test2", [6] = "test3", [4] = "test1" for k, v in ipairs(tabFiles) do --[[什么都没输出,为什么?因为控制变量初始值是按升序来遍历的,当key为1时,value为nil,此时便停止了遍历, 所有什么结果都没输出]]-- print(k, v) end
例子
local tabFiles = [2] = "test2", [6] = "test3", [4] = "test1" for k, v in pairs(tabFiles) do --输出2 test2, 6 test3, 4 test1 print(k, v) end
例子
local tabFiles = "alpha", "beta", [3] = "no", ["two"] = "yes" for i,v in ipairs(tabFiles ) do --输出前三个 备注:因为第四个key不是整数 print( tabFiles [i] ) end for i,v in pairs(tabFiles ) do --全部输出 print( tabFiles [i] ) end
字符串分割函数
function split(str,delimiter) local dLen = string.len(delimiter) local newDeli = ‘‘ for i=1,dLen,1 do newDeli = newDeli .. "["..string.sub(delimiter,i,i).."]" end local locaStart,locaEnd = string.find(str,newDeli) local arr = local n = 1 while locaStart ~= nil do if locaStart>0 then arr[n] = string.sub(str,1,locaStart-1) n = n + 1 end str = string.sub(str,locaEnd+1,string.len(str)) locaStart,locaEnd = string.find(str,newDeli) end if str ~= nil then arr[n] = str end return arr end t = split("php,js", ",") for k, v in pairs(t) do print(k, v) end
输出
php
js
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... 查看详情
Lua中pairs()和ipairs()的区别是啥?
】Lua中pairs()和ipairs()的区别是啥?【英文标题】:Whatisthedifferenceofpairs()vs.ipairs()inLua?Lua中pairs()和ipairs()的区别是什么?【发布时间】:2019-08-0204:14:17【问题描述】:在for循环中,使用pairs()和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 查看详情
lualua中ipair和pair的区别
pairs会遍历table的所有键值对。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integerkey值从1开始遍历的。请看个例子。tb={"oh",[3]="god","my",[... 查看详情
第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 查看详情
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",再... 查看详情
lua中易混淆函数
lua中易混淆的函数ipairs和pairs:ipairs只能顺序遍历table,遇到key不是数字就会退出pairs可以遍历table中所有元素---------------------------------------------------------------------pcall和xpcallpcall格式:pcall(function,...)运行函数返回true或false,不能 查看详情
lua特性
...数据类型:nil,boolean,number,string,userdata,function,table;5.pairs和ipairs区别:pairs:迭代table,遍历表中所有的KEY,可以返回nil;ipairs:迭代数 查看详情
@jsonformat注解和@datetimeformat注解异同点(代码片段)
@JsonFormat注解和@DateTimeFormat注解异同点 基础知识:HTTP请求和响应:key-value、请求体、Content-TypeSpring注解:@RequestParam、@RequestBody和@ResponseBody @JsonFormat注解情况一:1、使用 查看详情
@jsonformat注解和@datetimeformat注解异同点(代码片段)
@JsonFormat注解和@DateTimeFormat注解异同点 基础知识:HTTP请求和响应:key-value、请求体、Content-TypeSpring注解:@RequestParam、@RequestBody和@ResponseBody @JsonFormat注解情况一:1、使用 查看详情
javscript中的null和undefined异同(代码片段)
先看代码来了解null的undefined的差异和相同之处 //null和undefined的比较test(‘null==undefined‘,()=>expect(null==undefined).toBe(true);)test(‘null===undefined‘,()=>expect(null===undefined).toBe(false);)//null和 查看详情
kotlin与java的异同(代码片段)
本文章只为了方便查阅。文章目录Kotlin简介Kotlin与Java的异同1.函数2.变量变量类型可变变量不可变变量3.类和属性有参数的构造方法setter和getter4.枚举和"when"枚举when5."while"和"for"循环"while"循环"for"循... 查看详情
c++pair用法(代码片段)
pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。 1 pair的应用pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair。(1)STL中的map就是将key和value放在一起来保存... 查看详情
javajava异常中e的getmessage()和tostring()方法的异同(代码片段)
参考链接CSDN:Java异常中e的getMessage()和toString()方法的异同示例代码1:publicclassTestInfo????privatestaticStringstr=null;????publicstaticvoidmain(String[]args)????????System.out.println("testexception");??? 查看详情
linux:sudo和su命令异同(代码片段)
sudo通常‘Permissiondenied’错误的时候,需要执行sudo命令.该命令会提高执行权限(通常是root).当然使用sudo-uusername会指定特定用户.并不是所有的用户都可以执行sudo命令,只有在sudoersfile中存在的用户才能执行.具体请看这里:sudoersfile编... 查看详情
方法的重载和重写的异同之处(代码片段)
Java方法重载方法的重载(overload)Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载publicclassMethodDemo02publicstaticvoidmain(String[]args)//下面是针对求和方法的调用intsum1=add01(1,2);intsum2=add02(1... 查看详情
图像函数imagecreatetruecolor()和imagecreate()的异同点(代码片段)
共同点:这两个函数都是用于创建画布区别:1.不同的是创建画布和为画布填充颜色的流程不一样;用imagecreatetruecolor(intx,inty)创建的是一幅大小为x和y的图像(默认为黑色),如想改变背景颜色则需要为画布分配颜色imagecolorallcollate(resou... 查看详情