lua学习-3 循环和流程控制

这里写目录标题

判断

for 循环

数值遍历

lua 复制代码
for exp1,exp2,exp3 do
 //todo
 end

上述代码是指:从exp1 到exp2 以exp3为步长进行循环并执行todo代码,exp3默认为1,其实exp2可以是函数,但是只会执行一次(计算出结果,就不会再次执行了).

lua 复制代码
for i=1,f(x) do
    print(i)
end
 
for i=10,1,-1 do
    print(i)
end

泛型遍历

遍历数组

lua 复制代码
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 

遍历对象

lua 复制代码
b = {
    t1='rt1',
    t2=2
}

for i, v in pairs(b) do
    print(i, v)
end 

ipairs 和 pairs的异同

相同:

都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;
不同:

ipairs从第一个数字key开始,依次输出所有的key+1的键值,遇到字母下标并不会结束遍历,只是不输出而已,如果遇到nil则退出;

pairs无序输出字母类型key或者数字类型key的键值,遇到nil不输出,但不会停止遍历;

  1. ipairs会按照key的顺序输出数据,遇到不连续的数据停止输出,pairs会无序输出所有数据
  2. pairs和ipairs都会输出没有key的数据,ipairs会跳过字符串的key,pairs会输出所有的数据,优先输出不带key的按照顺序,带key的无序输出
  3. ipairs遇到nul会停止,pairs不会停止
  4. key为数组才是数组下标,key为字符串数字则是字符串下标
lua 复制代码
table = {["1"]="11",[1]="1",[3]="3"}
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end
-----------ipairs----------------
1	1
-----------pairs----------------
1	11
1	1
3	3

参考链接

while 循环

lua 复制代码
while(condition)
do
   statement(s)
end

statements (循环体语句) 可以是一条或多条语句,condition(条件) 可以是任意表达式,在 condition(条件) 为 true 时执行循环体语句,建议有逻辑将condition修改为false,否则将死循环。

repeat循环

lua 复制代码
repeat
   statements
until( condition )

循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。

如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。
类似于其他语言中的dowhile循环,statements一定会 执行一次,当condition为真则跳出循环(区分while循环)

goto

基础用法

lua 复制代码
goto FLAG;
a = 123
::FLAG::;
print(a)

注意事项

  1. 不能从外部goto到代码块中
  2. 不同跳出或者跳入一个函数中(因为函数也是一个代码块)
相关推荐
secondyoung4 小时前
Cortex-R52学习:MPU内存保护机制
arm开发·单片机·学习·arm·mpu
red_redemption4 小时前
自由学习记录(198)
学习
花岛溯4 小时前
Cursor 学习 DAY2·切换AI模型
学习
星夜夏空994 小时前
FreeRTOS学习(9)——临界区
学习
小智老师PMP6 小时前
零基础能不能考PMP?零基础专属学习路径+全套扶持体系
学习·算法·职场和发展·软件工程·求职招聘·敏捷流程
XGeFei7 小时前
【Fastapi学习笔记(4)】—— JsonScheme与数据验证、错误响应格式、正则表达式
学习·fastapi
爱喝水的鱼丶8 小时前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇) 第四篇:SAP 报表异常处理机制:数据校验与消息提示规范落地
开发语言·数据库·学习·算法·sap·abap
東雪木8 小时前
泛型、反射、注解(Spring 框架核心底层)专属复习笔记
java·windows·笔记·学习·spring
小陈phd9 小时前
多模态大模型学习笔记(四十七)——跨模态融合策略:早融合、中融合与晚融合核心解析
笔记·学习
进击的小头9 小时前
第7篇:MOS 管最全入门:原理、关键参数、选型、驱动与典型应用
经验分享·科技·嵌入式硬件·学习