lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

2023-12-22 01:20

本文主要是介绍lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别

  • 介绍
  • for循环
    • 参数
    • ipairs和pairs
  • while
  • repeat until
  • 总结

介绍

这里我用while、for、repeat until分别输出1-20之间的奇数 ,具体的语法可以看下面的代码

for循环

参数

定义一个初始值为startValue的i,并且i每次改变值是changeValue,直到i的值变为EndValue时执行完当次结束
如果for循环没有changeValue时,则默认changeValue为1,可以不写

--不隐藏changeValue
for i = startValue, EndValue, changeValue doend--隐藏changeValue
for i = startValue, EndValue doend

例子如下:

for i = 1, 20 ,1 doif(i%2 == 1) thenlogError("i ============> "..i.."为奇数")end
endfor i = 1, 20 doif(i%2 == 1) thenlogError("i ============> "..i.."为奇数")end
end

打印如下:
在这里插入图片描述

ipairs和pairs

ipairs和pairs都是遍历表中数据,这两个的区别主要是pairs可以识别多种类型的键值对,但是ipairs只能识别数字为键的数据表。

下面是两种方式的打印,这里我们打印纯数字表、纯字符串表、纯boolean表以及多数据类型的表以及多类型key、value的表

打印纯数字表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印纯字符串类型的方式

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest1) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印纯boolean表数据

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest4) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest4) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述

打印多类型值的表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest2) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest2) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述
打印多类型键值对的表

--测试表格1
local tabTest1 = {1,2,3,4,5}--测试表格2
local tabTest2 = {1,2,"a",3,true}--测试表格3
local tabTest3 = {"1str","2str","3str","4str","5str"}--测试表格4
local tabTest4 = {true,false,true,false,false}--测试表格5
local tabTest5 = {[1] = 10,["a"] = "str",[true] = false,[2] = "asd",
}for k,v in pairs(tabTest5) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
endfor k,v in ipairs(tabTest5) dologError("k=> "..tostring(k)..", v=> "..tostring(v))
end

在这里插入图片描述

while

while就是根据后面的条件判定是否执行while内部的方法代码,condition 为判定条件,判定成功则走完这一边之后不在继续执行。

--while condition do
--	  statements
--endlocal a = 1
while(a <= 20) do if(a%2 == 1) thenlogError("奇数=============>"..a)enda = a + 1
end

在这里插入图片描述

repeat until

repeat until判定条件在后置,所以当满足条件时不执行上述循环体代码

--repeat
--	  循环体
--until(condition)local a = 1
repeat if(a%2 == 1) thenlogError("奇数=============>"..a)enda = a + 1
until(a > 20)

在这里插入图片描述

总结

while和for就是可以理解成前置条件语句,满足时执行完毕后不在继续执行。
repeat until理解为后置语句所以当满足条件时不执行。

这篇关于lua中的循环 while、for、repeat until三种循环方式、pairs和ipairs区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522164

相关文章

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh