流程控制对于程序来说比较重要,可以对特定的流程进行处理,一般情况下需要与判断语句配合使用,Lua语言中提供的控制结构有if、while、repeat、for,并且也提供break关键字,在开始讲解控制语句前先介绍下Lua中的变量。
在Lua中的变量:全局变量、局部变量。
类型 | 说明 |
---|---|
全局变量 | 默认情况Lua中所有均为全局变量 |
局部变量 | 使用local关键字声名的变量,范围是从声名开始到语句块结束 |
a = 5
local a = 5
不管全局变量还是局部变量,默认初始都是nil。
循环类型 | 说明 |
---|---|
if-else | 逻辑判断,如果…那么 |
while | 循环执行某一段语句,在执行前会判断是否为真 |
repeat | 先执行某一段语句,在执行完成后判断是否为真 |
for | 循环前根据初始条件,自增,以及判断是否可执行 |
break | 跳出循环体,整个循环结束 |
return | 表示返回值 |
if语句在其他语言中都会用到,Lua也提供了支持。
local flag = true
if flag then
print("flag")
end
local flag = false
if flag then
print("flag")
else
print("not flag")
end
local flag = false
local status
if flag then
print("flag")
elseif status then
print("status")
else
print("not status flag")
end
Lua中提供了while控制结构,但是没有提供do…while控制结构,同样可以用bread跳出循环。
语法结构:
while 条件 do
end
例如输出一串数字
local i = 1
while i<10 do
print("i=" , i)
i = i+1
end
---------------------输出结果
i= 1
i= 2
i= 3
i= 4
i= 5
i= 6
i= 7
i= 8
i= 9
注意:Lua中不支持continue关键字跳出当前循环进入到下次循环中,所以在写逻辑是要仔细检查避免出错。
repeat关键字与其他语言中的do … while一样。语法结构:
repeat
--do something
until 条件
例如简单的输出10到1
local i =10
repeat
print("i = " , i)
i = i-1
until i == 0
----------输出结果----------
i = 10
i = 9
i = 8
i = 7
i = 6
i = 5
i = 4
i = 3
i = 2
i = 1
for循环根据给定的变量初始值,结束值,以及步长来进行判断是否可以执行某一段语句,控制结构:
for var = begin ,finish ,step do
--dosomething
end
例如:输出从1到10,但是步长为2。
for i = 1, 10 ,2 do
print("i = " , i)
end
------输出结果-------
i = 1
i = 3
i = 5
i = 7
i = 9
如果step不给定值则默认为1。
for i = 1, 10 do
print("i = " , i)
end
------输出结果----------
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
在while、for 、repeat控制结构中均可以使用break来终止循环。
local i =1
while i<11 do
print("i= " , i)
--当i增加到5时,跳出循环
if i == 5 then
break
end
i = i+1
end
------------输出结构------------------
i= 1
i= 2
i= 3
i= 4
i= 5
for i = 1, 10 do
if i == 3 then
break
end
print("i = " , i)
end
-----------输出结果------------
i = 1
i = 2
local i = 1
repeat
if i == 7 then
break
end
print("i = " , i)
i = i+1
until i == 10
------------输出结果------------------
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
return主要用在函数返回结果,或者结束一个函数的执行,return只能写在语句块的最后,return执行了之后的所有语句都不会执行。
function sum(x ,y)
return x+y
end
local sum = sum(1,1)
print(sum)
以上是Lua中所用到的流程控制结构。