你可以使用 switch
语句匹配单个枚举值:
directionToHead = .south
switch directionToHead {
case .north:
print("Lots of planets have a north")
case .south:
print("Watch out for penguins")
case .east:
print("Where the sun rises")
case .west:
print("Where the skies are blue")
}
// 打印“Watch out for penguins”
你可以这样理解这段代码:“判断 directionToHead
的值。当它等于 .north
,打印 “Lots of planets have a north”
。当它等于 .south
,打印 “Watch out for penguins”
。”……以此类推。
正如在 第六章:控制流 中介绍的那样,在判断一个枚举类型的值时,switch
语句必须穷举所有情况。如果忽略了 .west
这种情况,上面那段代码将无法通过编译,因为它没有考虑到 CompassPoint
的全部成员。强制穷举确保了枚举成员不会被意外遗漏。
当不需要匹配每个枚举成员的时候,你可以提供一个 default
分支来涵盖所有未明确处理的枚举成员:
let somePlanet = Planet.earth
switch somePlanet {
case .earth:
print("Mostly harmless")
default:
print("Not a safe place for humans")
}
// 打印“Mostly harmless”