lua 条件控制语句总结

前言

几乎所有的编程语言,必然会涉及到条件控制,比如像 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 do
        print(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) do
          print(i,v)
end

上述实例输出的结果为
1 TOM
2 JERRY
3 ROWS
4 LUCY

 

但是如果将 arr 的值进行修改为
arr = {"TOME","JERRY","ROWS",x="JACK","LUCY"}
同样的代码在执行的时候,就只能看到和之前一样的结果,而其中的 x 为JACK就无法遍历出来,缺失了数据,如果解决呢 ?
我们可以将迭代器函数变成 pairs, 如:
for i,v in pairs(arr) do
        print(i,v)
end
上述实例就输出的结果为
1 TOM
2 JERRY
3 ROWS
4 LUCY
x JACK

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆风飞翔的小叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值