【问题标题】:?: in Objective-C [duplicate]?:在Objective-C中[重复]
【发布时间】:2014-08-23 15:44:57
【问题描述】:

this iOS 教程中,有一行代码带有?,后跟:。在代码注释的上下文中,我认为这是某种三元运算,但是,这显然不是三元运算符的语法。这段代码中发生的事情是否与?: 一起命名?

// Initialize the list of weather items if it doesn't exist
NSMutableArray *array = self.xmlWeather[@"weather"] ?: [NSMutableArray array];

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    这是一个GCC extension

    6.7 省略操作数的条件

    条件表达式中的中间操作数可以省略。那么如果第一个操作数不为零,那么它的值就是条件表达式的值。

    因此,表达式

    x ? : y
    

    如果不为零,则其值为x;否则,y 的值。

    这个例子完全等价于

    x ? x : y
    

    在这种简单的情况下,省略中间操作数的能力并不是特别有用。当它变得有用时,第一个操作数确实或可能(如果它是宏参数)包含副作用。然后在中间重复操作数将执行两次副作用。省略中间操作数会使用已经计算的值,而不会产生重新计算的不良影响。

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 2011-09-08
      • 2023-04-08
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多