空合并运算符
可选值为 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 反馈 — 无需本地设置。