推荐答案
在 Swift 中,?? 是空合运算符(Nil-Coalescing Operator),用于提供默认值。它的作用是在可选值为 nil 时,返回一个默认值,否则返回解包后的可选值。
本题详细解读
语法
a ?? b
a是一个可选值(Optional)。b是一个非可选值,且类型与a解包后的类型一致。
工作原理
- 如果
a不是nil,则返回a!(即解包后的值)。 - 如果
a是nil,则返回b。
示例
let optionalValue: Int? = nil let defaultValue = 10 let result = optionalValue ?? defaultValue print(result) // 输出: 10
在这个例子中,optionalValue 是 nil,所以 ?? 运算符返回了 defaultValue,即 10。
等价代码
空合运算符 ?? 可以等价于以下代码:
let result = optionalValue != nil ? optionalValue! : defaultValue
这种写法更加简洁,减少了代码的冗余。
注意事项
??运算符的优先级较低,因此在复杂表达式中使用时,可能需要使用括号来明确优先级。b的类型必须与a解包后的类型一致,否则编译器会报错。
应用场景
- 在处理可选值时,避免强制解包(
!)导致的运行时崩溃。 - 在需要提供默认值的场景中,简化代码逻辑。