决策(判断)

决策

决策结构要求程序开发人员设置一个或多测试或计算条件。如果条件计算结果为真,则执行一个或多个语句;如果条件为假,则执行另外的语句。

下面是大多数程序语言中的决策结构的一般形式:

image

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 中零被当作真,这一点与其它大部分语言不一样:

流程图

image

示例

--[ 局部变量定义 --] 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 中零被当作真,这一点与其它大部分语言不一样。

流程图

image

示例

--[ 定义局部变量 --] 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