Swift 条件语句


条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句。

可以通过下图来简单了解条件语句的执行过程:

Swift 提供了以下几种类型的条件语句:

Swift if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

语法

Swift 语言中 if 语句的语法:

  1. if boolean_expression {
  2. /* 如果布尔表达式为真将执行的语句 */
  3. }

如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

流程图

C 中的 if 语句

实例

  1. import Cocoa
  2.  
  3. var varA:Int = 10;
  4.  
  5. /* 检测条件 */
  6. if varA < 20 {
  7. /* 如果条件语句为 true 执行以下程序 */
  8. print("varA 小于 20");
  9. }
  10. print("varA 变量的值为 \(varA)");

当上面的代码被编译和执行时,它会产生下列结果:

  1. varA 小于 20
  2. varA 变量的值为 10

Swift if...else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。

语法

Swift 语言中 if...else 语句的语法:

  1. if boolean_expression {
  2. /* 如果布尔表达式为真将执行的语句 */
  3. } else {
  4. /* 如果布尔表达式为假将执行的语句 */
  5. }

如果布尔表达式为 true,则执行 if 块内的代码。如果布尔表达式为 false,则执行 else 块内的代码。

流程图

C 中的 if...else 语句

实例

  1. import Cocoa
  2.  
  3. var varA:Int = 100;
  4.  
  5. /* 检测布尔条件 */
  6. if varA < 20 {
  7. /* 如果条件为 true 执行以下语句 */
  8. print("varA 小于 20");
  9. } else {
  10. /* 如果条件为 false 执行以下语句 */
  11. print("varA 大于 20");
  12. }
  13. print("varA 变量的值为 \(varA)");

当上面的代码被编译执行时,它会产生下列结果:

  1. varA 大于 20
  2. varA 变量的值为 100

Swift 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 语句都不会执行。

语法

  1. if boolean_expression_1 {
  2. /* 如果 boolean_expression_1 表达式为 true 则执行该语句 */
  3. } else if boolean_expression_2 {
  4. /* 如果 boolean_expression_2 表达式为 true 则执行该语句 */
  5. } else if boolean_expression_3 {
  6. /* 如果 boolean_expression_3 表达式为 true 则执行该语句 */
  7. } else {
  8. /* 如果以上所有条件表达式都不为 true 则执行该语句 */
  9. }

实例

  1. import Cocoa
  2.  
  3. var varA:Int = 100;
  4.  
  5. /* 检测布尔条件 */
  6. if varA == 20 {
  7. /* 如果条件为 true 执行以下语句 */
  8. print("varA 的值为 20");
  9. } else if varA == 50 {
  10. /* 如果条件为 true 执行以下语句 */
  11. print("varA 的值为 50");
  12. } else {
  13. /* 如果以上条件都为 false 执行以下语句 */
  14. print("没有匹配条件");
  15. }
  16. print("varA 变量的值为 \(varA)");

当上面的代码被编译执行时,它会产生下列结果:

  1. 没有匹配条件
  2. varA 变量的值为 100

Swift 嵌套 if 语句

在 Swift 语言中,你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

语法

Swift 语言中 嵌套 if 语句的语法:

  1. if boolean_expression_1 {
  2. /* 当 boolean_expression_1 表达式 true 时执行 */
  3. if boolean_expression_2 {
  4. /* 当 boolean_expression_1 表达式 true 时执行 */
  5. }
  6. }

您可以嵌套 else if...else,方式与嵌套 if 语句相似。

实例

  1. import Cocoa
  2.  
  3. var varA:Int = 100;
  4. var varB:Int = 200;
  5.  
  6. /* 检测布尔条件 */
  7. if varA == 100 {
  8. /* 如果条件为 true 执行以下语句 */
  9. print("第一个条件为 true");
  10. if varB == 200 {
  11. /* 如果条件为 true 执行以下语句 */
  12. print("第二个条件也是 true");
  13. }
  14. }
  15. print("varA 变量的值为 \(varA)");
  16. print("varB 变量的值为 \(varB)");

当上面的代码被编译执行时,它会产生下列结果:

  1. 第一个条件为 true
  2. 第二个条件也是 true
  3. varA 变量的值为 100
  4. varB 变量的值为 200

Swift switch 语句

switch 语句允许测试一个变量等于多个值时的情况。 Swift 语言中只要匹配到 case 语句,则整个 switch 语句执行完成。

语法

Swift 语言中 switch 语句的语法:

  1. switch expression {
  2. case expression1 :
  3. statement(s)
  4. fallthrough /* 可选 */
  5. case expression2, expression3 :
  6. statement(s)
  7. fallthrough /* 可选 */
  8. default : /* 可选 */
  9. statement(s);
  10. }

一般在 switch 语句中不使用 fallthrough 语句。

这里我们需要注意 case 语句中如果没有使用 fallthrough 语句,则在执行当前的 case 语句后,switch 会终止,控制流将跳转到 switch 语句后的下一行。

如果使用了fallthrough 语句,则会继续执行之后的 case 或 default 语句,不论条件是否满足都会执行。

注意:在大多数语言中,switch 语句块中,case 要紧跟 break,否则 case 之后的语句会顺序运行,而在 Swift 语言中,默认是不会执行下去的,switch 也会终止。如果你想在 Swift 中让 case 之后的语句会按顺序继续运行,则需要使用 fallthrough 语句。

实例

以下实例没有使用 fallthrough 语句:

  1. import Cocoa
  2.  
  3. var index = 10
  4.  
  5. switch index {
  6. case 100 :
  7. print( "index 的值为 100")
  8. case 10,15 :
  9. print( "index 的值为 10 或 15")
  10. case 5 :
  11. print( "index 的值为 5")
  12. default :
  13. print( "默认 case")
  14. }

当上面的代码被编译执行时,它会产生下列结果:

  1. index 的值为 10 15

实例

以下实例使用 fallthrough 语句:

  1. import Cocoa
  2.  
  3. var index = 10
  4.  
  5. switch index {
  6. case 100 :
  7. print( "index 的值为 100")
  8. fallthrough
  9. case 10,15 :
  10. print( "index 的值为 10 或 15")
  11. fallthrough
  12. case 5 :
  13. print( "index 的值为 5")
  14. default :
  15. print( "默认 case")
  16. }

当上面的代码被编译执行时,它会产生下列结果:

  1. index 的值为 10 15
  2. index 的值为 5

? : 运算符

我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下:

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。

? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。