对值进行穷尽式 Switch
覆盖所有情况,或使用默认分支。
对值进行穷尽式 Switch 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
分支语句的作用
switch 会将一个值与多个情况进行比较,并执行第一个匹配的情况。它是冗长的 if/else-if 链的一种清晰替代方式。
let day = 3
switch day {
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
default:
print("Other")
}不会隐式贯穿执行
与 C 不同,Swift 的各个分支不会自动贯穿执行。匹配的分支执行完毕后,分支语句就会结束。不需要 break。
let n = 1
switch n {
case 1:
print("one")
case 2:
print("two")
default:
print("many")
}分支语句必须覆盖所有情况
分支语句必须覆盖每个可能的值。对于 Int,您无法列出所有值,因此需要提供一个 default 分支。
let code = 500
switch code {
case 200:
print("OK")
case 404:
print("Not Found")
default:
print("Unhandled: \(code)")
}default 分支
default 分支会捕获前面未匹配的所有情况,并且必须放在最后。
let grade = "X"
switch grade {
case "A":
print("Excellent")
case "B":
print("Good")
default:
print("Needs review")
}对字符串使用分支语句
分支语句可以处理任何支持相等比较的值,包括字符串。
let command = "start"
switch command {
case "start":
print("Starting")
case "stop":
print("Stopping")
default:
print("Unknown command")
}不能有空分支
每个分支都必须至少包含一条语句。如果确实希望某个分支不执行任何操作,请写入 break。
let n = 2
switch n {
case 1:
print("one")
case 2:
break
default:
print("other")
}
print("done")作为语句使用的分支语句
分支语句会执行语句本身,不会直接返回一个值。要生成一个值,可以在每个分支中赋值,或使用它调用函数。
let level = 2
var label: String
switch level {
case 1: label = "low"
case 2: label = "mid"
default: label = "high"
}
print(label)对布尔值使用分支语句
您可以使用 true 和 false 分支对布尔值进行分支处理。不需要 default,因为这两种情况已经全部覆盖。
let isReady = true
switch isReady {
case true:
print("Go")
case false:
print("Wait")
}枚举不需要 default
对枚举进行分支处理时,如果您处理了所有情况,分支语句就已经完整覆盖,因此不需要 default。
enum Direction { case north, south }
let d = Direction.north
switch d {
case .north: print("Up")
case .south: print("Down")
}清晰的多路逻辑
分支语句可以让多路决策保持整洁。每种结果都有自己的标记分支,便于浏览和扩展。
let score = 72
var result: String
switch score {
case 90...100: result = "A"
case 80..<90: result = "B"
case 70..<80: result = "C"
default: result = "F"
}
print(result)default 的位置
default 必须是最后一个分支。将它放在前面会导致后面的分支无法到达,而 Swift 禁止这种写法。
let x = 7
switch x {
case 0:
print("zero")
case 7:
print("seven")
default:
print("something else")
}快速检查
测试完整覆盖的分支语句。
回顾:对值使用完整覆盖的分支语句
Swift 的 switch 会匹配第一个分支,绝不会隐式贯穿执行,并且必须完整覆盖所有情况。对于 Int 或 String 这类开放范围的类型,请使用 default;完全覆盖的枚举不需要 default。
let n = 3
switch n {
case 1: print("a")
default: print("b")
}常见问题解答
「对值进行穷尽式 Switch」课时是免费的吗?
是的 — 「对值进行穷尽式 Switch」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「对值进行穷尽式 Switch」这节课中我会学到什么?
覆盖所有情况,或使用默认分支。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「对值进行穷尽式 Switch」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 对值进行穷尽式 Switch
- 匹配范围与元组
- 值绑定与 where 子句
- 复合分支与贯穿执行