Swift switch 语句
在本文中,您将学习使用 switch 语句来控制程序的执行流。
switch 语句让我们可以在许多备选方案中执行代码块。
Swift 中 switch 语句的语法为:
switch (expression) {case value1:// statementscase value2:// statements......default:// statements}
switch 语句计算括号 () 内的表达式。
- 如果表达式的结果等于
value1,则执行case value1:的语句。 - 如果表达式的结果等于
value2,则执行case value2:的语句。 - 如果没有匹配,则执行默认情况的语句。
if…else…if 梯形图执行相同的操作。然而,switch 语句的语法更清晰,更易于读写。Switch 语句流程图

实例 1
// program to find the day of the weeklet dayOfWeek = 4switch dayOfWeek {case 1:print("Sunday")case 2:print("Monday")case 3:print("Tuesday")case 4:print("Wednesday")case 5:print("Thursday")case 6:print("Friday")case 7:print("Saturday")default:print("Invalid day")}
结果如下:
Wednesday
在上面的实例中,我们为 dayOfWeek 变量赋值了 4。现在,将变量与每个 case 语句的值进行比较。
由于该值与 case 4 匹配,因此执行 case 中的语句 print("Wednesday"),并终止程序。
带回退的 Switch 语句
如果我们在 case 语句中使用 fallthrough 关键字,即使 case 值与 switch 表达式不匹配,控件也会继续下一个 case。例如:
// program to find the day of the weeklet dayOfWeek = 4switch dayOfWeek {case 1:print("Sunday")case 2:print("Monday")case 3:print("Tuesday")case 4:print("Wednesday")fallthroughcase 5:print("Thursday")case 6:print("Friday")case 7:print("Saturday")default:print("Invalid day")}
结果为:
WednesdayThursday
在上面的实例中,由于值与 case 4 匹配,因此执行 case 中的语句 print("Wednesday")
我们还使用了关键字 fallthrough。因此,即使 case 与 case 语句不匹配,也会执行 case 5 中的语句 print("Thursday")。
带范围的 Switch 语句
let ageGroup = 33switch ageGroup {case 0...16:print("Child")case 17...30:print("Young Adults")case 31...45:print("Middle-aged Adults")default:print("Old-aged Adults")}
结果为:
Middle-aged Adults
在上面的实例中,我们对每种情况使用了数值范围:case 0…16、case 17…30 和 case 31…45,而不是单个值。
此处,年龄组的值为 33,在 32…45 范围内。因此,执行语句 print("Middle-aged Adults")。
Switch 语句中的元组
在 Swift 中,我们也可以在 switch 语句中使用元组。例如:
let info = ("Dwight", 38)// match complete tuple valuesswitch info {case ("Dwight", 38):print("Dwight is 38 years old")case ("Micheal", 46):print("Micheal is 46 years old")default:print("Not known")}
结果如下:
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。