📅  最后修改于: 2023-12-03 15:20:24.991000             🧑  作者: Mango
Swift 语言中的 switch
语句用于基于不同的情况进行条件判断和执行不同的代码块。它与其他编程语言中的 switch
语句类似,但有一些独特的特性。
下面是 switch
语句的基本语法:
switch value {
case pattern1:
// 满足 pattern1 执行的代码块
case pattern2, pattern3:
// 满足 pattern2 或 pattern3 执行的代码块
default:
// 如果没有任何情况匹配,则执行 default 块
}
value
表示要进行匹配的值。case
关键字开始,后面是要匹配的模式。default
关键字指定当没有任何情况匹配时要执行的代码块。可以在 case
子句中匹配各种基本类型的数据,例如整数、浮点数、布尔值、字符串等,以及特殊类型如 nil
:
let number = 42
switch number {
case 0:
print("Zero")
case 1...9:
print("Single digit")
case let x where x % 2 == 0:
print("Even number")
case _:
print("Other number")
}
number
被匹配到不同的情况中。let
关键字和 where
子句,将匹配到的数字赋给 x
,并且只有当 x
是偶数时才匹配。_
表示任何其他数值。switch
语句还可以用于匹配元组,每个元素都可以使用不同的模式匹配:
let point = (0, 0)
switch point {
case (0, 0):
print("Origin")
case (_, 0):
print("On x-axis")
case (0, _):
print("On y-axis")
case let (x, y) where x == y:
print("Diagonal")
case let (x, y):
print("Arbitrary point")
}
point
被匹配到不同的情况中。(0, 0)
。_
忽略第一个元素,只匹配 y 值为 0 的情况。_
忽略第二个元素,只匹配 x 值为 0 的情况。let
关键字和 where
子句,只有当 x 和 y 值相等时才匹配。let
关键字捕获元组中的值。switch
语句也可以用于匹配枚举类型的值:
enum Direction {
case north
case south
case east
case west
}
let direction = Direction.north
switch direction {
case .north:
print("Go north")
case .south:
print("Go south")
case .east, .west:
print("Go east or west")
}
switch
语句根据 direction
的枚举值进行匹配。在 Swift 中,可以使用 switch
语句匹配可选类型:
let optionalNumber: Int? = 42
switch optionalNumber {
case nil:
print("No value")
case let value?:
print("Value is \(value)")
}
nil
的情况。let
关键字和 ?
运算符来解包可选值,并赋给 value
。switch
语句还支持匹配区间:
let score = 85
switch score {
case 0..<60:
print("Fail")
case 60..<70:
print("Pass")
case 70..<90:
print("Good")
case 90...100:
print("Excellent")
default:
print("Invalid score")
}
switch
语句根据 score
进行匹配。0..<60
来匹配 0 到 59 的分数。switch
语句是 Swift 中一种非常灵活和强大的控制流语句。它可以用于匹配各种类型的值,包括基本类型、元组、枚举、可选类型等。通过巧妙地使用 case
子句、where
子句和其他相关特性,开发者可以编写出更简洁、可读性更好的代码。