Swift switch 语句

在本文中,您将学习使用 switch 语句来控制程序的执行流。

switch 语句让我们可以在许多备选方案中执行代码块。

Swift 中 switch 语句的语法为:

  1. switch (expression) {
  2. case value1:
  3. // statements
  4. case value2:
  5. // statements
  6. ...
  7. ...
  8. default:
  9. // statements
  10. }

switch 语句计算括号 () 内的表达式。

  • 如果表达式的结果等于 value1,则执行 case value1: 的语句。
  • 如果表达式的结果等于 value2,则执行 case value2: 的语句。
  • 如果没有匹配,则执行默认情况的语句。
注意:我们可以对 if…else…if 梯形图执行相同的操作。然而,switch 语句的语法更清晰,更易于读写。

Switch 语句流程图


实例 1

  1. // program to find the day of the week
  2. let dayOfWeek = 4
  3. switch dayOfWeek {
  4. case 1:
  5. print("Sunday")
  6. case 2:
  7. print("Monday")
  8. case 3:
  9. print("Tuesday")
  10. case 4:
  11. print("Wednesday")
  12. case 5:
  13. print("Thursday")
  14. case 6:
  15. print("Friday")
  16. case 7:
  17. print("Saturday")
  18. default:
  19. print("Invalid day")
  20. }

结果如下:

  1. Wednesday

在上面的实例中,我们为 dayOfWeek 变量赋值了 4。现在,将变量与每个 case 语句的值进行比较。

由于该值与 case 4 匹配,因此执行 case 中的语句 print("Wednesday"),并终止程序。


带回退的 Switch 语句

如果我们在 case 语句中使用 fallthrough 关键字,即使 case 值与 switch 表达式不匹配,控件也会继续下一个 case。例如:

  1. // program to find the day of the week
  2. let dayOfWeek = 4
  3. switch dayOfWeek {
  4. case 1:
  5. print("Sunday")
  6. case 2:
  7. print("Monday")
  8. case 3:
  9. print("Tuesday")
  10. case 4:
  11. print("Wednesday")
  12. fallthrough
  13. case 5:
  14. print("Thursday")
  15. case 6:
  16. print("Friday")
  17. case 7:
  18. print("Saturday")
  19. default:
  20. print("Invalid day")
  21. }

结果为:

  1. Wednesday
  2. Thursday

在上面的实例中,由于值与 case 4 匹配,因此执行 case 中的语句 print("Wednesday")

我们还使用了关键字 fallthrough。因此,即使 casecase 语句不匹配,也会执行 case 5 中的语句 print("Thursday")


带范围的 Switch 语句

  1. let ageGroup = 33
  2. switch ageGroup {
  3. case 0...16:
  4. print("Child")
  5. case 17...30:
  6. print("Young Adults")
  7. case 31...45:
  8. print("Middle-aged Adults")
  9. default:
  10. print("Old-aged Adults")
  11. }

结果为:

  1. Middle-aged Adults

在上面的实例中,我们对每种情况使用了数值范围:case 0…16case 17…30case 31…45,而不是单个值。

此处,年龄组的值为 33,在 32…45 范围内。因此,执行语句 print("Middle-aged Adults")


Switch 语句中的元组

在 Swift 中,我们也可以在 switch 语句中使用元组。例如:

  1. let info = ("Dwight", 38)
  2. // match complete tuple values
  3. switch info {
  4. case ("Dwight", 38):
  5. print("Dwight is 38 years old")
  6. case ("Micheal", 46):
  7. print("Micheal is 46 years old")
  8. default:
  9. print("Not known")
  10. }

结果如下:

  1. Dwight is 38 years old

在上面的实例中,我们创建了一个名为 info 的元组,其值为:"Dwight" 和 38。

这里,每个 case 语句也包括元组:case("Dwight",38)case("Micheal",46),而不是单个值。

现在,将信息的值与每个 case 语句进行比较。由于该值与 case("Dwight",38) 匹配,因此执行语句 print("Dwight is 38 years old")

要了解有关元组的更多信息,请访问 Swift Tuple。