nil-coalescing 运算符“??”的作用是什么?在可选链中?
What is the role of the nil-coalescing operator "??" in optional chaining?
我不明白什么??运算符在此片段的第二行执行:
func presentingControllerFrameWithContext(_ transitionContext: AnyObject) -> CGRect {
let frame = transitionContext.containerView??.bounds
// more code
}
我是 Swift 的新手,必须 maintain/extend 现有代码。我使用了很多资源,但无法找到 ?? 的这种用法的解释。运算符,我想我理解为:
https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72
如本 post 的标题所述,我认为这是可选链接的一些特例,如以下所述:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID246
但是我找不到 ?? 的任何用法在那里,也许我的假设是完全错误的...
我希望这里有人能给我解释或提示在哪里寻找答案。
这不是您看到的零合并运算符。 nil-coalescing 运算符是一个二元运算符,需要放在一个 Optional 值和一个非 Optional 的一个或两个 Optional 值之间。在您的代码示例中,情况显然并非如此。
您看到的是嵌套可选上的可选链接。
let nestedOptional: Int?? = nil
nestedOptional??.description
您可以创建 Optional 值,其包装值也是 Optional,在这种情况下,您需要一个接一个地展开每个可选层。
我不明白什么??运算符在此片段的第二行执行:
func presentingControllerFrameWithContext(_ transitionContext: AnyObject) -> CGRect {
let frame = transitionContext.containerView??.bounds
// more code
}
我是 Swift 的新手,必须 maintain/extend 现有代码。我使用了很多资源,但无法找到 ?? 的这种用法的解释。运算符,我想我理解为:
https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72
如本 post 的标题所述,我认为这是可选链接的一些特例,如以下所述:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID246
但是我找不到 ?? 的任何用法在那里,也许我的假设是完全错误的...
我希望这里有人能给我解释或提示在哪里寻找答案。
这不是您看到的零合并运算符。 nil-coalescing 运算符是一个二元运算符,需要放在一个 Optional 值和一个非 Optional 的一个或两个 Optional 值之间。在您的代码示例中,情况显然并非如此。
您看到的是嵌套可选上的可选链接。
let nestedOptional: Int?? = nil
nestedOptional??.description
您可以创建 Optional 值,其包装值也是 Optional,在这种情况下,您需要一个接一个地展开每个可选层。