0Pricing
Swift Academy · 课时

对值进行穷尽式 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 反馈 — 无需本地设置。

此课程中的所有课时

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