0Pricing
Swift Academy · 课时

复合分支与贯穿执行

组合多个分支,并有意使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 对值进行穷尽式 Switch
  2. 匹配范围与元组
  3. 值绑定与 where 子句
  4. 复合分支与贯穿执行
← 返回 Swift Academy