前言
几乎所有的编程语言,必然会涉及到条件控制,比如像 if for循环等,本篇将介绍在lua中如何使用条件控制语句
Lua控制结构
Lua 语言提供了一组精简且常用的控制结构,包括用于条件执行的证以及用于循环的 while、 repeat 和 for。 所有的控制结构语法上都有一个显式的终结符: end 用于终结 if、 for 及 while 结构, until 用于终结repeat 结构
if then elseif else
if语句先测试其条件,并根据条件是否满足执行相应的 then 部分或 else 部分,else 部分是可选的
function testif(a)
if a>0 then
print("a是正数")
end
end
function testif(a)
if a>0 then
print("a是正数")
else
print("a是负数")
end
end
如果要编写嵌套的 if 语句,可以使用 elseif。 它类似于在 else 后面紧跟 一个if。根据传入的年龄返回不同的结果,如下需求
age<=18 青少年,age>18 , age <=45 青年age>45 , age<=60 中年人age>60 老年人
function show(age)
if age<=18 then
return "青少年"
elseif age>18 and age<=45 then
return "青年"
elseif age>45 and age<=60 then
return "中年人"
elseif age>60 then
return "老年人"
end
end
while循环
顾名思义,当条件为真时 while 循环会重复执行其循环体。 Lua 语言先测试 while 语句 的条件,若条件为假则循环结束;否则, Lua 会执行循环体并不断地重复这个过程
语法:
while 条件 do循环体end
例子:实现数组的循环
function testWhile()
local i = 1
while i<=10 do
print(i) i=i+1
end
end

repeat循环
顾名思义, repeat-until语句会重复执行其循环体直到条件为真时结束。 由于条件测试在循环体之后执行,所以循环体至少会执行一次。
语法
repeat循环体until 条件
function testRepeat()
local i = 10
repeat print(i)
i=i-1
until i < 1
end
for循环
数值型for循环 语法
for param=exp1,exp2,exp3 do循环体end
param的值从exp1变化到exp2之前的每次循环会执行 循环体,并在每次循环结束后将步长(step)exp3增加到param上。exp3可选,如果不设置默认为1
for i = 1,100,10 doprint(i)end
泛型for循环
泛型for循环通过一个迭代器函数来遍历所有值,类似于java中的 foreach语句。
for i,v in ipairs(x) do循环体end
i是数组索引值,v是对应索引的数组元素值,ipairs是Lua提供的一个迭代器函数,用来迭代数组,x是要遍历的数组
arr = {"TOME","JERRY","ROWS","LUCY"}for i,v in ipairs(arr) doprint(i,v)end
上述实例输出的结果为
1 TOM2 JERRY3 ROWS4 LUCY

但是如果将arr的值进行修改为
arr = {"TOME","JERRY","ROWS",x="JACK","LUCY"}
同样的代码在执行的时候,就只能看到和之前一样的结果,而其中的x为JACK就无法遍历出来,缺失了数据,如果解决呢?
我们可以将迭代器函数变成pairs,如:
for i,v in pairs(arr) doprint(i,v)end
上述实例就输出的结果为
1 TOM2 JERRY3 ROWS4 LUCYx JACK
本文深入解析Lua语言的if-then elseif-else、while、repeat和for循环,助你理解基本的条件控制和迭代逻辑。涵盖嵌套if、年龄分类、循环数组示例,以及for循环的数值型和泛型用法。

1087

被折叠的 条评论
为什么被折叠?



