【问题标题】:What does this two question mark mean?这两个问号是什么意思?
【发布时间】:2014-11-21 16:14:38
【问题描述】:

我遇到了这段代码,不知道这两个问号是什么意思?

这个变量的定义如下:

var featureImageSizeOptional: CGSize?   

让我困惑的代码是:

let featureImageSize = featureImageSizeOptional ?? CGSizeZero

【问题讨论】:

    标签: swift


    【解决方案1】:

    这是合并操作符。如果它不为 nil,则返回第一个表达式 (featureImageSizeOptional)。如果第一个表达式为 nil,则运算符返回第二个表达式 (CGSizeZero)。

    请参阅the Language Guide 了解更多信息。

    【讨论】:

      【解决方案2】:

      该运算符不“返回第一个表达式”——它返回第一个表达式的展开值(如果它不是 nil)。来自 Apple 文档(重点是我的):

      nil 合并运算符 (a ?? b) unwraps 一个可选的 a 如果它 包含一个值,如果 a 为 nil,则返回一个默认值 b。这 表达式 a 始终是可选类型。表达式 b 必须 匹配存储在 a 中的类型。

      nil 合并运算符是以下代码的简写:

      a != 无? a!:b

      上面的代码使用了三元条件运算符和*forced 当 a 不是时,展开 (a!) 以访问包装在 a 中的值 nil*,否则返回b。 nil 合并运算符提供了一个 更优雅的方式来封装这种条件检查和 以简洁易读的形式展开。

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        • 2011-10-24
        • 2014-01-19
        相关资源
        最近更新 更多