【Lua】Lua中ipair和pair的区别

摘要:
pairs会遍历table的所有键值对。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integerkey值从1开始遍历的。tb={"oh",[3]="god","my",[5]="hello",[6]="world"}fork,vinipairsdoprint(k,v)end输出结果就是:1oh2my3god因为tb不存在tb[4],所以遍历到此为止了。fork,vinpairsdoprint(k,v)end输出结果:1oh2my3god6world5hello我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。办法之一是:fori=1,#tbdoiftb[i]thenprintelseend当然,仅仅是个数组的话,ipairs也没问题。

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】Lua中ipair和pair的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Node.js安全清单PropertyGrid—默认属性,默认事件,属性默认值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Lua读写文件

文件读写 文件读写对制作游戏很有帮助。可以调用别的文件中的代码,保存最高分、游戏存档、玩家状态等信写到文件中。 首先,让我们看一个简单的命令:dofile。这个命令会读入另一个文件的代码并立即执行。 代码: dofile("./test.lua") 很简单的命令。注意 ./ 是指根目录,不是子目录。如果是子目录,应该这样用: 代码: dofi...

lua 代码加密方案

require 实现 require函数在实现上是依次调用package.searchers(lua51中是package.loaders)中的载入函数,成功后返回。在loadlib.c文件里有四个载入函数的实现,分别为searcher_preload, searcher_Lua, searcher_C, searcher_Croot。 searche...

android Studio 配置LUA 开发环境

android Studio 配置 LUA 开发环境关于Android LUA资料 android如何调用lua?Android lua 教程Lua官网lua语言解释Lua 5.1 参考手册Android Lua热修复 引诉大牛的原话: Android 调用 Lua /Lua 调用 Android 代码 在Android项目中使用Lua,需要两个步骤:...

lua 调试器(Decoda)

1、http://www.unknownworlds.com/decoda,这个工具可以注入到宿主程序内对lua脚本进行调试。 2、有2种方式对lua进行调试 从Decoda启动宿主程序 a、project菜单中的Settings b、在commond中填入你要运行的宿主程序。点击ok c、用它打开lua脚本设置断点。Decoda 中选择Start D...

Lua function 函数

Lua支持面向对象,操作符为冒号‘:’。o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数。Lua基础库中的所有函数都是用C实现的。但这些细节对于lua程序员是透明的。调用一个用C实现的函数,和调用一个用Lua实现的函数,二者没有任何区别。 函数的参数跟局部变量一样,用传入的实参来初始化,多余的实...

Cocos2dx-lua开发之c++绑定到lua

一.简单介绍 文章介绍是在实际的游戏开发项目中,将自定义的C++类绑定到lua中,能够让lua调用c++类。会创建一个python脚本,执行python脚本会让自动将我们的c++类绑定到lua。生成我们要的代码。文章会介绍配置环境、编写脚本、测试类、实际项目中调用,以及一些遇到的问题 二.兵马未动粮草先行 当前我用的是quicklua3.3win7系统。下...