流程控制对于程序来说比较重要,可以对特定的流程进行处理,一般情况下需要与判断语句配合使用,Lua语言中提供的控制结构有if、while、repeat、for,并且也提供break关键字,在开始讲解控制语句前先介绍下Lua中的变量。

变量

在Lua中的变量:全局变量、局部变量。

类型

说明

全局变量

默认情况Lua中所有均为全局变量

局部变量

使用local关键字声名的变量,范围是从声名开始到语句块结束

  • 全局变量
a = 5
  • 局部变量
local a = 5

不管全局变量还是局部变量,默认初始都是nil。

控制结构

循环类型

说明

if-else

逻辑判断,如果…那么

while

循环执行某一段语句,在执行前会判断是否为真

repeat

先执行某一段语句,在执行完成后判断是否为真

for

循环前根据初始条件,自增,以及判断是否可执行

break

跳出循环体,整个循环结束

return

表示返回值

if-else

if语句在其他语言中都会用到,Lua也提供了支持。

  • 单一 if
local flag = true
if flag then
    print("flag")
end
  • if-else
local flag = false
if flag then
    print("flag")
else
    print("not flag")
end
  • if-elseif
local flag = false
local status
if flag then
    print("flag")
elseif status then
    print("status")
else
    print("not status flag")
end

while

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

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循环根据给定的变量初始值,结束值,以及步长来进行判断是否可以执行某一段语句,控制结构:

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

break

在while、for 、repeat控制结构中均可以使用break来终止循环。

  • while结构中使用
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 结构中使用
for i = 1, 10 do
    if i == 3 then
        break
    end
    print("i = " , i)
end
-----------输出结果------------
i = 	1
i = 	2
  • repeat结构中使用
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只能写在语句块的最后,return执行了之后的所有语句都不会执行。

function sum(x ,y)
    return x+y
end
local sum = sum(1,1)
print(sum)

以上是Lua中所用到的流程控制结构。