首页 > 其他分享 >Lua ipairs和pairs的区别

Lua ipairs和pairs的区别

时间:2023-08-06 15:55:41浏览次数:38  
标签:pairs 遍历 索引 ipairs Lua key

在Lua语言中,ipairs和pairs都可以应用于对表和数组的遍历,但它们之间有什么区别呢?

首先,我们要知道Lua中的表可以以数字或字符串作为表的键key,但用数字作为key时,可以称为索引id。当以连续不间断的数字索引作为表的key时,这种表就可以称为数组。

ipairs就主要应用于数组中,会从1开始有序的遍历整个数组。当一个表中存在数字索引时,ipairs也会从1开始遍历,但当索引中存在缺口,即存在某个数字索引对应的值为nil时,就会终止遍历。

pairs则既可以应用于表,也可以应用于数组,它会将整个表内值不为nil的所有key都遍历一遍才终止迭代,但需要注意的是pairs的遍历是无序的。

标签:pairs,遍历,索引,ipairs,Lua,key
From: https://www.cnblogs.com/mshentaiBlog/p/17609496.html

相关文章

  • Lua require的搜索路径
    require时Lua语言中负责加载库的函数,他和dofile的区别主要在于:1.require会判断是否文件已经加载避免重复加载同一文件;2.require会搜索目录加载文件。require的目录搜索路径:用于搜索Lua文件的路径是变量package.path的当前值,当package初始化时,会将package.path设置为环境变量LU......
  • 无涯教程-Lua - if语句函数
    if语句由布尔表达式组成,后跟一个或多个语句。ifstatement-语法Lua编程语言中的if语句的语法是-if(boolean_expression)then--[statement(s)willexecuteifthebooleanexpressionistrue--]end如果布尔表达式的输出为true,则将执行if语句中的代码块。如果......
  • Lua script attempted to access a non local key in a cluster node 问题解决
    一、问题描述最近优化公司需要对不同的业务系统的缓存工具提供一个标准化的解决方案。各个业务系统将缓存数据通过map结构进行存储,然后在缓存系统中将这些map获取出来,然后保存在redis数据库中。技术经理想到的最好解决方案是将map集合直接存储在redis的hash表中。但是要求对hash......
  • 无涯教程-Lua - nested语句函数
    Lua编程语言允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明这一概念。nestedloops-语法Lua中嵌套for循环语句的语法如下-forinit,max/minvalue,incrementdoforinit,max/minvalue,incrementdostatement(s)endstatement(s)en......
  • 无涯教程-Lua - repeat...until 语句函数
    与for和while循环(它们在循环顶部测试循环条件)不同,Lua编程中的repeat...until循环语言在循环的底部检查其条件。repeat...until循环与while循环相似,不同之处在于,保证do...while循环至少执行一次。repeat...untilloop-语法Lua编程语言中repeat...until循......
  • 无涯教程-Lua - for语句函数
    for循环是一种重复控制结构,可让您有效地编写需要执行特定次数的循环。forloop-语法Lua编程语言中for循环的语法如下-forinit,max/minvalue,incrementdostatement(s)end这是for循环中的控制流程-首先执行init步骤,并且仅执行一次。此步骤使您可以声明和初......
  • 无涯教程-Lua - while语句函数
    只要给定条件为真,Lua编程语言中的while循环语句就会重复执行目标语句。whileloop-语法Lua编程语言中while循环的语法如下-while(condition)dostatement(s)endwhileloop-流程图在这里,需要注意的关键是while循环可能根本不执行。当测试条件并且输出为false......
  • 无涯教程-Lua - Math库
    在科学和工程计算中,无涯教程经常需要数学运算,可以使用标准的Lua库数学来进行运算。下表显示了数学库中可用的函数列表。Sr.No.Library/Method&Purpose1math.abs(x)返回x的绝对值。2math.acos(x)返回x的反余弦(以弧度为单位)。3math.asin(x)返回x的反正弦(以......
  • 无涯教程-Lua - 系统工具
    在任何应用程序中,访问操作系统级别的函数通常都是必需的,并且它随操作系统库一起提供。下表列出了可用的函数。Sr.No.Library/Method&Purpose1os.clock()返回该程序使用的CPU时间(以秒为单位)的近似值。2os.date([format[,time]])返回字符串或包含日期和时间的表,并......
  • SpringBoot + Redis 执行lua脚本
    1、背景有时候,我们需要一次性操作多个Redis命令,但是这样的多个操作不具备原子性,而且Redis的事务也不够强大,不支持事务的回滚,还无法实现命令之间的逻辑关系计算。所以,一般在开发中,我们会利用lua脚本来实现Redis的事务。2、lua脚本Redis中使用lua脚本,我们需要注意......