决策
决策结构要求程序开发人员设置一个或多测试或计算条件。如果条件计算结果为真,则执行一个或多个语句;如果条件为假,则执行另外的语句。
下面是大多数程序语言中的决策结构的一般形式:
Lua 语言中所有布尔真和非 nil 值都当作真;把所有的布尔假和 nil 作为假。请注意,Lua 中的零会被当作真,而其它大部分语言会将零当作假。
Lua 语言提供了如下几类决策语句。点击下面的链接查看详细内容。
语句 | 描述 |
---|---|
if 语句 | if 语句中包括一个布尔表达式和一个或多个语句。 |
if...else 语句 | if 语句也可以选择和 esle 语句一起使用。当条件为假时,则执行 else 语句。 |
嵌套 if 语句 | 在 if 语句或者 else if 语句内使用 if 或者 else if。 |
if 语句
if 语句包括一个布尔表达式和一个或多个语句。
语法
Lua 语言 if 语句的语法如下:
if(boolean_expression) then --[如果布尔表达式为真,statement(s) 执行。--] end
如果布尔表达式计算结果为真,则 if 语句内的代码块执行;如果布尔表达式计算结果为假,跳过 if 语句中的代码直接执行 if 语句后面的代码。
Lua 语言中所有布尔真与非 nil 的组合的结果被当作真,而布尔假与 nil 组合被当作假。值得注意的是,Lua 中零被当作真,这一点与其它大部分语言不一样:
流程图
示例
--[ 局部变量定义 --] a = 10; --[ 检查 if 语句使用的布尔条件 --] if( a < 20 ) then --[ 如果条件为真则输出如下内容 --] print("a is less than 20" ); end print("value of a is :", a);
执行上面的代码可以得到如下的结果:
a is less than 20 value of a is : 10
if...else 语句
如果 if 语句后面跟上 else 语句,那么条件为假时就执行 else 语句的代码。
语法
Lua 语言中 if...else 语句的语法如下所示:
if(boolean_expression) then --[ 如何条件为真,则执行此处代码。 --] else --[ 如何条件为假,则执行此处代码。 --] end
当布尔表达式为真时,执行 if 语句的代码块;如果条件为假时,则执行 else 语句的代码块。
Lua 语言中所有布尔真与非 nil 的组合的结果被当作真,而布尔假与 nil 组合被当作假。值得注意的是,Lua 中零被当作真,这一点与其它大部分语言不一样。
流程图
示例
--[ 定义局部变量 --] a = 100; --[ 检查条件 --] if( a < 20 ) then --[ 如果条件为真,则输出如下内容 --] print("a is less than 20" ) else --[ 如果条件为假,则输出如下内容 --] print("a is not less than 20" ) end print("value of a is :", a)
执行上面的代码则可以得到如下的输出结果:
a is not less than 20 value of a is : 100
if...else if...else 语句
if 语句后可以选择跟上 else if...else 语句。该语句对于检测多个条件时非常有用。
使用 if,else if 以及 else 时,请注意以下三点:
- if 语句后面至多可以有一个 else 语句。如果有 else if,则此 else 语句必须在 else if 语句之后。
- if 语句之后可以有多零个或多个 else if,但是这些 else if 必须在 else 语句之前。
- 如果一个 if 语句的条件为真时,其后的所有剩余的 else 和 else if 的都不会再执行,也不会测试它们的条件真假。
语法
Lua 中 if...else if...else 语句的语法规则如下:
if(boolean_expression 1) then --[ 如果布尔表达式 1 为真时,则执行此处代码。--] else if( boolean_expression 2) --[ 如果布尔表达式 2 为真时,则执行此处代码。 --] else if( boolean_expression 3) --[ 如果布尔表达式 3为真时,则执行此处代码。 --] else --[ 当上面所有布尔表达式条件都为假时执行此处代码。--] end
示例
--[ 定义局部变量 --] a = 100 --[ 检查布尔条件 --] if( a == 10 ) then --[ 条件为真时输出如下内容 --] print("Value of a is 10" ) elseif( a == 20 ) then --[ if else if 条件为真时 --] print("Value of a is 20" ) elseif( a == 30 ) then --[ if else if 条件为真时 --] print("Value of a is 30" ) else --[ 如果上述条件全部为假时 --] print("None of the values is matching" ) end print("Exact value of a is: ", a )
执行上面的代码将得到如下的输出结果:
None of the values is matching Exact value of a is: 100
嵌套 if 语句
在 Lua 语言中,你可以合法的嵌套使用 if-else 语句。这也就是说,你可以在一个 if 或 if-else 语句内再使用一个 if 或 if-else 语句。
语法
嵌套 if 语句的语法规则如下:
if( boolean_expression 1) then --[ 如果布尔表达式 1 为真,则执行此处代码。 --] if(boolean_expression 2) then --[ 如果布尔表达式 2 为真(注:布尔表达式 1 为真),则执行此处代码)。 --] end end
你也可以像嵌套使用 if 语句那样使用嵌套使用 else if...else 语句。
示例
--[ 定义局部变量 --] a = 100; b = 200; --[ 检查条件真假 --] if( a == 100 ) then --[ 如果前面的条件为真,再检查下面的条件。 --] if( b == 200 ) then --[ 如果条件为真,则输出如下内容 --] print("Value of a is 100 and b is 200" ); end end print("Exact value of a is :", a ); print("Exact value of b is :", b );
执行上面的代码,可以得到如下的输出结果:
Value of a is 100 and b is 200 Exact value of a is : 100 Exact value of b is : 200