0Pricing
Swift Academy · 课时

绑定多个可选值

在一个条件中解包多个可选值。

绑定多个可选值 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

一次绑定多个值

您可以在一个 if let 中用逗号分隔,从而解包多个可选值。所有值都不能为 nil,代码体才会执行。

let a: Int? = 1
let b: Int? = 2
if let a, let b {
    print(a + b)
}

全部成功或全部跳过

如果列表中的任意可选值是 nil,整个代码块都会被跳过。这是一种全有或全无的解包方式。

let first: String? = "Ada"
let last: String? = nil
if let first, let last {
    print("\(first) \(last)")
} else {
    print("Missing a name")
}

完整写法

完整写法使用显式赋值:if let a = optA, let b = optB。简写形式会省略重复的名称。

let optX: Int? = 10
let optY: Int? = 20
if let x = optX, let y = optY {
    print(x * y)
}

混合绑定与条件

您可以交错使用布尔条件和绑定。后面的条件可以使用前面已经解包的值。

let age: Int? = 25
if let age, age >= 18 {
    print("Adult: \(age)")
}

依赖式解包

后面的绑定可以依赖前面的绑定,因为每个值都会按照从左到右的顺序解包。

let dict = ["key": "42"]
if let text = dict["key"], let number = Int(text) {
    print(number + 8)
}

顺序很重要

绑定会按顺序求值,并采用短路逻辑。如果第一个绑定失败,后面的绑定就完全不会求值。

func parse(_ s: String?) -> Int? {
    print("parsing")
    return s.flatMap { Int($0) }
}
let a: Int? = nil
if let a, let b = parse("5") {
    print(a + b)
} else {
    print("skipped")
}

guard 中的多个绑定

逗号分隔的写法同样适用于 guard let,可以在继续执行前解包多个值。

func makeFullName(_ first: String?, _ last: String?) -> String {
    guard let first, let last else { return "Unknown" }
    return "\(first) \(last)"
}
print(makeFullName("Grace", "Hopper"))

组合转换

多重绑定非常适合一次解析多个字符串输入。

let wInput = "4"
let hInput = "5"
if let w = Int(wInput), let h = Int(hInput) {
    print("Area: \(w * h)")
}

避免嵌套 if let

如果没有多重绑定,您就需要嵌套多个 if let 代码块,形成金字塔结构。逗号写法可以将其扁平化。

let p: Int? = 2
let q: Int? = 3
if let p {
    if let q {
        print(p + q)
    }
}

扁平化版本

下面使用一个多重绑定,以扁平的方式实现与前一个嵌套示例相同的逻辑。

let p: Int? = 2
let q: Int? = 3
if let p, let q {
    print(p + q)
}

附加尾部条件

您可以最后添加一个布尔检查,用来验证组合后的结果。

let xs = "3"
let ys = "9"
if let x = Int(xs), let y = Int(ys), x < y {
    print("\(x) is less than \(y)")
}

快速检查

测试多个可选值绑定。

回顾:绑定多个可选值

使用逗号在一个 if let 或 guard let 中解包多个可选值。这种方式要么全部成功,要么全部失败;它按从左到右的顺序求值,支持依赖式绑定,也可以混合布尔条件。

let a: Int? = 1
let b: Int? = 2
if let a, let b { print(a + b) }

常见问题解答

「绑定多个可选值」课时是免费的吗?

是的 — 「绑定多个可选值」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「绑定多个可选值」这节课中我会学到什么?

在一个条件中解包多个可选值。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「绑定多个可选值」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. if let 与简写绑定
  2. 使用 guard let 提前退出
  3. 绑定多个可选值
  4. switch 与 for 中的可选模式
← 返回 Swift Academy