0Pricing
Swift Academy · 课时

空合并运算符

可选值为 nil 时提供默认值。

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

空值 nil 的问题

可选值可能包含一个值,也可能是 nil。通常,您希望在值存在时使用它,否则在它为空时使用默认值。

let typedName: String? = nil
let name = typedName ?? "Guest"
print(name)

?? 运算符

空值合并运算符 ?? 左侧接受一个可选值,右侧接受一个默认值。如果可选值不为空,您会得到其中已解包的值;否则会得到默认值。

let stored: Int? = 42
let value = stored ?? 0
print(value)

默认值只在为空时使用

右侧的默认值只会在左侧为 nil 时使用。即使现有值是 0 或空字符串,也会保留它。

let count: Int? = 0
let result = count ?? 99
print(result)

结果是非可选值

表达式 optional ?? default 会产生一个非可选值,因为始终有一个值可以作为 fallback。

let nickname: String? = nil
let display: String = nickname ?? "Anonymous"
print(display)

替代 if let

如果没有 ??,您需要使用 if/else 来解包并提供默认值。空值合并会将这一过程压缩成一个表达式。

let age: Int? = nil
var finalAge: Int
if let unwrapped = age {
    finalAge = unwrapped
} else {
    finalAge = 18
}
print(finalAge)

使用 ?? 实现相同逻辑

下面是使用空值合并改写的前一个示例。这样写更短,意图也更加明显。

let age: Int? = nil
let finalAge = age ?? 18
print(finalAge)

在字符串插值中进行合并

您可以直接在字符串插值中使用 ??,输出友好的 fallback 文本。

let city: String? = nil
print("City: \(city ?? "Unknown")")

来自可失败的转换

将字符串转换为整数时会返回一个可选值。当文本不是数字时,空值合并可以提供默认值。

let text = "abc"
let number = Int(text) ?? -1
print(number)

与字典结合使用空值合并

从字典中查找键会返回一个可选值。当键不存在时,可以使用 ?? 提供 fallback。

let scores = ["Ann": 90]
let bob = scores["Bob"] ?? 0
print(bob)

默认值可以计算得到

右侧可以是符合类型要求的任意表达式,甚至可以是函数调用。只有在需要时才会对它求值。

func defaultName() -> String {
    return "Player1"
}
let entered: String? = nil
print(entered ?? defaultName())

类型必须匹配

默认值必须与可选值所包装的类型兼容。Int? 需要一个 Int 默认值。

let maybe: Int? = nil
let safe = maybe ?? 100
print(safe + 1)

快速检查

测试空值合并。

回顾:空值合并运算符

?? 运算符会解包可选值,或在需要时使用默认值,并产生一个非可选结果。只有当可选值为 nil 时,才会使用默认值。

let input: String? = nil
let name = input ?? "Default"
print(name)

常见问题解答

「空合并运算符」课时是免费的吗?

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

「空合并运算符」这节课中我会学到什么?

可选值为 nil 时提供默认值。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

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

「空合并运算符」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 空合并运算符
  2. 串联默认值
  3. 函数参数中的默认值
  4. 字典默认下标
← 返回 Swift Academy