条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句。
可以通过下图来简单了解条件语句的执行过程:
https://share.weiyun.com/5EsPvQN
Swift 提供了以下几种类型的条件语句:
-
if 语句
if
语句 由一个布尔表达式和一个或多个执行语句组成。
Swift 语言中 if
语句的语法:
if boolean_expression {
/* 如果布尔表达式为真将执行的语句 */
}
如果布尔表达式为 true
,则 if
语句内的代码块将被执行。如果布尔表达式为 false
,则 if
语句结束后的第一组代码(闭括号后)将被执行。
流程图
https://share.weiyun.com/5o1smlt
实例
import Cocoa
var varA:Int = 10;
/* 检测条件 */
if varA < 20 {
/* 如果条件语句为 true 执行以下程序 */
print("varA 小于 20");
}
print("varA 变量的值为 \(varA)");
当上面的代码被编译和执行时,它会产生下列结果:
varA 小于 20
varA 变量的值为 10
-
if...else 语句
一个 if
语句 后可跟一个可选的 else
语句,else
语句在布尔表达式为 false
时执行。
Swift 语言中 if...else 语句的语法:
if boolean_expression {
/* 如果布尔表达式为真将执行的语句 */
} else {
/* 如果布尔表达式为假将执行的语句 */
}
流程图:https://share.weiyun.com/5Ow5qH4
实例
import Cocoa
var varA:Int = 100;
/* 检测布尔条件 */
if varA < 20 {
/* 如果条件为 true 执行以下语句 */
print("varA 小于 20");
} else {
/* 如果条件为 false 执行以下语句 */
print("varA 大于 20");
}
print("varA 变量的值为 \(varA)");
当上面的代码被编译执行时,它会产生下列结果:
varA 大于 20
varA 变量的值为 100
-
if...else if...else 语句
一个 if
语句 后可跟一个可选的 else if...else
语句,else if...else
语句 在测试多个条件语句时是非常有用的。当你使用 if...else if...else
语句时需要注意以下几点:
-
if
语句后可以有 0 个或 1 个else
,但是如果 有else if
语句,else
语句需要在else if
语句之后 -
if
语句后可以有 0 个或多个else if
语句,else if
语句必须在else
语句出现之前 - 一旦
else
语句执行成功,其他的else if
或else
语句都不会执行
语法
if boolean_expression_1 {
/* 如果 boolean_expression_1 表达式为 true 则执行该语句 */
} else if boolean_expression_2 {
/* 如果 boolean_expression_2 表达式为 true 则执行该语句 */
} else if boolean_expression_3 {
/* 如果 boolean_expression_3 表达式为 true 则执行该语句 */
} else {
/* 如果以上所有条件表达式都不为 true 则执行该语句 */
}
实例
import Cocoa
var varA:Int = 100;
/* 检测布尔条件 */
if varA == 20 {
/* 如果条件为 true 执行以下语句 */
print("varA 的值为 20");
} else if varA == 50 {
/* 如果条件为 true 执行以下语句 */
print("varA 的值为 50");
} else {
/* 如果以上条件都为 false 执行以下语句 */
print("没有匹配条件");
}
print("varA 变量的值为 \(varA)");
当上面的代码被编译执行时,它会产生下列结果:
没有匹配条件
varA 变量的值为 100
-
嵌套 if 语句
在 Swift 语言中,你可以在一个 if
或 else if
语句内使用另一个 if
或 else if
语句。
语法:
if boolean_expression_1 {
/* 当 boolean_expression_1 表达式 true 时执行 */
if boolean_expression_2 {
/* 当 boolean_expression_1 表达式 true 时执行 */
}
}
您可以嵌套 else if...else
,方式与嵌套 if
语句相似。
实例:
import Cocoa
var varA:Int = 100;
var varB:Int = 200;
/* 检测布尔条件 */
if varA == 100 {
/* 如果条件为 true 执行以下语句 */
print("第一个条件为 true");
if varB == 200 {
/* 如果条件为 true 执行以下语句 */
print("第二个条件也是 true");
}
}
print("varA 变量的值为 \(varA)");
print("varB 变量的值为 \(varB)");
当上面的代码被编译执行时,它会产生下列结果:
第一个条件为 true
第二个条件也是 true
varA 变量的值为 100
varB 变量的值为 200
-
switch 语句
switch
语句允许测试一个变量等于多个值时的情况。 Swift 语言中只要匹配到 case
语句,则整个 switch
语句执行完成。
语法
switch expression {
case expression1 :
statement(s)
fallthrough /* 可选 */
case expression2, expression3 :
statement(s)
fallthrough /* 可选 */
default : /* 可选 */
statement(s);
}
一般在 switch
语句中不使用 fallthrough
语句。这里我们需要注意 case
语句中如果没有使用 fallthrough
语句,则在执行当前的 case
语句后,switch
会终止,控制流将跳转到 switch
语句后的下一行。如果使用了fallthrough
语句,则会继续执行之后的 case
或 default
语句,不论条件是否满足都会执行。
注意:在大多数语言中,
switch
语句块中,case
要紧跟break
,否则 case 之后的语句会顺序运行,而在 Swift 语言中,默认是不会执行下去的,switch
也会终止。如果你想在 Swift 中让case
之后的语句会按顺序继续运行,则需要使用fallthrough
语句。
实例1
以下实例没有使用 fallthrough 语句:
import Cocoa
var index = 10
switch index {
case 100 :
print( "index 的值为 100")
case 10,15 :
print( "index 的值为 10 或 15")
case 5 :
print( "index 的值为 5")
default :
print( "默认 case")
}
当上面的代码被编译执行时,它会产生下列结果:
index 的值为 10 或 15
实例2
以下实例使用 fallthrough 语句:
import Cocoa
var index = 10
switch index {
case 100 :
print( "index 的值为 100")
fallthrough
case 10,15 :
print( "index 的值为 10 或 15")
fallthrough
case 5 :
print( "index 的值为 5")
default :
print( "默认 case")
}
当上面的代码被编译执行时,它会产生下列结果:
index 的值为 10 或 15
index 的值为 5
? : 运算符
我们已经在前面的章节中讲解了 条件运算符 ? :
,可以用来替代 if...else
语句。它的一般形式如下:
Exp1 ? Exp2 : Exp3;
其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。