楔子
上一篇文章,我们介绍了 Lua 的整数、浮点数、布尔值、字符串,其它的数据结构后续介绍,本次先来看看 Lua 中的控制结构。
条件语句
我们来看看 Lua 中的条件语句怎么写,语法和其它编程语言类似,单独的 if,if 和 else,if...elseif...elseif...else。
-- 单独的 if
if condition then
statement
end
-- if 和 else
if condition then
statement
else
statement
end
-- if..elseif...else
-- 注意:是 elseif,不是 else if,else 和 if 之间需要连起来
-- 可以写多个 elseif,但是只能有至多一个 if 和一个 else
if condition then
statement
elseif condition then
statement
elseif condition then
statement
else
statement
end
if 和 elseif 后面必须加上一个 then,类似于 Python 中必须加上一个冒号一样,但是 else 则不需要 then。另外每个 if 语句,在结尾处必须有一个 end,来标志这个 if 语句块的结束。既然结尾处有 end,那么 Lua 中也就不需要缩进了。但 Python 必须严格按照缩进来,而 Lua 则不被缩进约束,但为了代码的可读性还是建议按照 Python 的规范来编写。
a = 85
if a > 80 then
print("a > 80")
end
-- a > 80
if a > 85 then
print("a > 85")
else
print("a <= 85")
end
-- a <= 85
if a < 60 then
print("不及格")
elseif a < 85 then
print("及格")
elseif a < 100 then
print("优秀")
elseif a == 100 then
print("满分")
else
print("无效的分数")
end
-- 优秀
我们说,Lua 的 if 语句不受缩进影响,那么有时候单个 if 我们也可以写在一行。
a = 85
-- 这么写也是可以的
if a > 80 then print("a > 80") end
-- if 和 else也可以写在一行
if a > 85 then print("a > 85") else print("a <= 85") end
-- 甚至 if elseif else 也可以写在一行,或者自由换行也是可以的
if a < 60 then
print("不及格") elseif a
< 85 then print("及格") elseif
a <= 100 then print("优秀") else
print("无效的分数") end
对于 if elseif else,最好不要像上面那么写,尽管它是支持的,但是不要这么做。由此我们看到,Lua 不是靠缩进来规范语句的,而是靠关键字。
嵌套 if 也是类似的:
age = 18
gender = "female"
if gender == "female" then
if age >= 18 then
print("亭亭玉立的大姑娘")
else
print("可爱的小女孩")
end
else
if age >= 18 then
print("英俊挺拔的小伙子")
else
print("调皮的小男孩")
end
end
-- 亭亭玉立的大姑娘
上面的嵌套 if 是标准写法,但我们说 Lua 的 if 不受缩进的约束。
age = 18
gender = "female"
if gender == "female" then
if age >= 18 then
print("亭亭玉立的大姑娘")
else print("可爱的小女孩")
end else
if age >= 18 then
print("英俊挺拔的小伙子") else
print("调皮的小男孩")
end end
-- 亭亭玉立的大姑娘
所以我们不考虑缩进也是可以的,但是不要这么写,可读性太差了,一定要按照规范来写。如果是 Python 的话,要是这样不管缩进,直接就报错了。
while 循环
Lua 提供了标准的 while 循环,格式如下。
while condition do
statement
end
举个例子:
i =
1 sum = 0
while i < 10 do
sum = sum + i
i = i + 1
end
print(string.format("sum = %d", sum)) -- sum = 45
这个比较简单,没什么可说的。
repeat ... until
repeat ... until 说白点,就是一直重复做,直到满足某个条件停下来。
i =
1 sum = 0
-- 不断的执行 sum = sum + 1 i = i + 1,直到满足 i >= 10的时候停下来
repeat
sum = sum + i
i = i + 1
until i >= 10
print(string.format("sum = %d", sum)) -- sum = 45
这里忘记提了,我们这里的条件只有一个,如果是多个条件呢?和 Python一样,使用 and、or 进行连接。
for 循环
for 循环分为两种,我们来看一下。
for a = 1, 8 do
print(a)
end
--[[
1
2
3
4
5
6
7
8
]]
-- 我们看到循环打印了 1 到 8
-- 当然还可以跟上步长
for a = 1, 8, 3 do
print(a)
end
--[[
1
4
7
]]
上面是简单的遍历数字,for 循环还可以遍历表,等介绍表的时候我们再说。
然后是 break 关键字,它负责跳出循环体,可以用于for、while、repeat,注意:没有 continue。
for a = 1, 8 do
print(a)
break
end
-- 1
-- Lua 中没有 continue,但我们可以是 if else 进行模拟
-- 比如,如果 a 是偶数,那么我们就继续下一层循环
for a = 1, 8 do
if a % 2 == 0 then
-- 分支代码可以为空
else print(a) end
end
--[[
1
3
5
7
]]
以上就是 Lua 中的条件语句和循环,比较简单。