复合分支与贯穿执行
组合多个分支,并有意使用 fallthrough。
复合分支与贯穿执行 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
复合分支
一个分支可以用逗号分隔,从而匹配多个值:case "a", "b":。列出的所有值都会执行相同的代码。
let letter = "a"
switch letter {
case "a", "e", "i", "o", "u":
print("Vowel")
default:
print("Consonant")
}为什么使用复合分支
复合分支可以避免重复编写相同的代码体,将行为相同的值归为一组。
let day = 6
switch day {
case 6, 7:
print("Weekend")
case 1, 2, 3, 4, 5:
print("Weekday")
default:
print("Invalid day")
}复合分支与范围
您可以在一个复合分支中混合使用范围和单独的值。
let code = 204
switch code {
case 200, 201, 204:
print("Success")
case 400...499:
print("Client error")
default:
print("Other")
}复合分支与绑定
在复合分支中进行绑定时,每个备选项都必须绑定相同名称,且名称的类型也必须相同。
let point = (0, 5)
switch point {
case (let v, 0), (0, let v):
print("On an axis at distance \(v)")
default:
print("Off the axes")
}引入贯穿执行
Swift 的分支默认不会贯穿执行。fallthrough 关键字会强制继续执行下一个分支。
let n = 1
switch n {
case 1:
print("one")
fallthrough
case 2:
print("two")
default:
print("done")
}贯穿执行的工作方式
fallthrough 会无条件进入下一个分支的代码体;它不会重新检查下一个分支的条件。请谨慎使用。
let level = 3
switch level {
case 3:
print("Level 3 perks")
fallthrough
case 2:
print("Level 2 perks")
fallthrough
case 1:
print("Level 1 perks")
default:
break
}贯穿执行会忽略模式
由于贯穿执行会跳过下一个模式的检查,下一个分支不能依赖绑定值,否则代码将无法编译。
let x = 10
switch x {
case 10:
print("ten")
fallthrough
default:
print("reached default")
}复合分支与贯穿执行
如果多个值需要执行相同的代码,请优先使用复合分支。只有在确实需要逐级执行时,才使用 fallthrough。
let grade = "B"
switch grade {
case "A", "B":
print("Passing")
default:
print("Other")
}使用贯穿执行进行累加
贯穿执行适合实现累积效果,例如从某个等级向下列出所有福利。
let tier = 2
var perks = [String]()
switch tier {
case 2:
perks.append("Premium")
fallthrough
case 1:
perks.append("Basic")
default:
break
}
print(perks)两者混用
在同一个分支语句中,您可以根据需要同时使用复合分支和贯穿执行。
let n = 0
switch n {
case 0:
print("zero")
fallthrough
case 1, 2:
print("small")
default:
print("large")
}可读性提示
由于大多数语言默认会贯穿执行,贯穿执行可能会让读者感到意外。请注释说明您的意图,或尽可能优先使用复合分支。
let status = "warn"
switch status {
case "warn", "error":
print("Needs attention")
default:
print("OK")
}快速检查
测试复合分支和贯穿执行。
回顾:复合分支与贯穿执行
请使用以逗号分隔的复合分支,让多个值共享同一个主体。只有在您有意让执行流程继续进入下一个分支时,才使用显式的 fallthrough 关键字。
let n = 2
switch n {
case 1, 2: print("small")
default: print("big")
}常见问题解答
「复合分支与贯穿执行」课时是免费的吗?
是的 — 「复合分支与贯穿执行」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「复合分支与贯穿执行」这节课中我会学到什么?
组合多个分支,并有意使用 fallthrough。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「复合分支与贯穿执行」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 对值进行穷尽式 Switch
- 匹配范围与元组
- 值绑定与 where 子句
- 复合分支与贯穿执行