Lua 流程控制
条件判断
与其他编程语言相同, Lua 提供 if 语句以实现条件判断.
if
if 语句用于执行条件判断, 其语法结构如下:
1 2 3 | |
condition 是需要判断的表达式, if 语句会根据其真假值以决定是否执行 statements 代码块.
如果 condition 为真, 则执行 statements 代码块, 如果为假, 则跳过该部分代码块.
Info
表达式可使用逻辑运算符进行连接, 参考 Lua - 运算符.
例如:
1 2 3 4 5 6 | |
elseif
elseif 是 if 语句的可选语句, 用于执行多个条件的判断. 其语法结构如下:
1 2 3 4 5 6 7 8 | |
elseif 后面可以跟任意多个 condition 表达式, condition 为真时会执行对应的 statements 代码块.
如果 condition 为假, 则依次检查后续的 elseif, 直到找到为真且匹配的表达式.
例如:
1 2 3 4 5 6 7 8 9 10 | |
else
else 是 if 语句的可选语句, 用于表达式为假时执行的默认代码块. 其语法结构如下:
1 2 3 4 5 | |
如果 condition 为假, 则执行 else 后的 defaultStatements 代码块.
例如:
1 2 3 4 5 6 7 8 9 | |
else 可以与 elseif 一起使用, else 会在所有条件都为假时执行.
例如:
1 2 3 4 5 6 7 8 9 10 11 | |
循环
Lua 提供以下三种循环语句, 分别用于在特定情况下重复执行代码块中的内容.
for
Lua 支持两种 for 循环: 数值型 for 循环以及泛型 for 循环.
Info
这里仅介绍数值型 for 循环, 泛型 for 循环请阅读 Lua 迭代器.
数值型 for 循环的语法结构如下:
1 2 3 | |
var: 循环变量, 自动声明为局部变量. 其值在每次循环时自动更新.start: 循环变量的起始值.stop: 循环变量的结束值.step: 可选部分, 步长, 每次循环时循环变量的增量, 默认为 1.statements: 循环语句中需要反复执行的代码块.
循环开始时var 会被设定为起始值 start, 每次循环都会执行 statements 中的代码.
每次循环结束时会更新 var 的值, 即 var = var + step. 当满足以下条件时循环结束:
step为正, 则var大于结束值stop时结束循环.step为负, 则var小于结束值stop时结束循环.
例如:
1 2 3 4 5 6 7 8 9 | |
while
while 循环在给定表达式为真时重复执行代码块. 其语法结构如下:
1 2 3 | |
while 循环会反复执行, 直到 condition 表达式的值为假.
如果 condition 表达式在某次循环后为假,则循环结束.
Note
while 循环在开始时会先检查 condition 的值, 如果为假则不执行循环.
例如:
1 2 3 4 5 6 7 | |
repeat ... until
repeat ... until 循环与 while 循环类似, 用于在条件满足时重复执行代码块. 其语法结构如下:
1 2 3 | |
repeat ... until 循环的结束条件与 while 循环相同.
不同的是其会先执行一次 statements 中的代码再判断 condition 表达式, 因此其至少会执行一次循环.
例如:
1 2 3 4 5 6 7 | |
break
break 语句用于跳出循环. 循环体中的代码执行 break 会立刻退出当前循环并执行循环语句之后的代码.
例如:
1 2 3 4 5 6 7 | |
对于多层嵌套循环, break 只能跳出当前正在进行的循环语句, 并不能直接跳出外层循环.
嵌套语句
流程控制语句也可以嵌套使用以实现更为复杂的逻辑.
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |