Swift 条件语句


Swift 条件语句

条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句。
可以通过下图来简单了解条件语句的执行过程:

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

语句 描述

if 语句

if 语句 由一个布尔表达式和一个或多个执行语句组成。

if...else 语句

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

if...else if...else 语句

if 后可以有可选的 else if...else 语句, else if...else 语句常用于多个条件判断。

内嵌 if 语句

你可以在 ifelse if 中内嵌 ifelse if 语句。

switch 语句

switch 语句允许测试一个变量等于多个值时的情况。

? : 运算符

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

Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

Swift if 语句

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

语法

Swift 语言中 if 语句的语法:

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

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

流程图

if语句

实例

import Cocoa

var varA:Int = 10;

/* 检测条件 */
if varA < 20 {
    /* 如果条件语句为 true 执行以下程序 */
    print("varA 小于 20");
}
print("varA 变量的值为 \(varA)");

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

varA 小于 20
varA 变量的值为 10

Swift if...else 语句

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

语法

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

if boolean_expression {
   /* 如果布尔表达式为真将执行的语句 */
} else {
   /* 如果布尔表达式为假将执行的语句 */
}

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

流程图

if else语句

实例

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

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

语法

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

Swift 嵌套 if 语句

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

语法

Swift 语言中 嵌套 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

Swift switch 语句

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

switch语句

语法

Swift 语言中 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