在此iOS教程中,有一行代码,?
其后是:
。在代码注释的上下文中,我认为这是某种三元运算,但是,这显然不是三元运算符的语法。这段代码中发生了?:
什么吗?
// Initialize the list of weather items if it doesn't exist
NSMutableArray *array = self.xmlWeather[@"weather"] ?: [NSMutableArray array];
这是一个GCC扩展名:
6.7省略操作数的条件
条件表达式中的中间操作数可以省略。然后,如果第一个操作数不为零,则其值为条件表达式的值。
因此,表达
x ? : y
x
如果if的值不为零;否则为的值y
。这个例子完全相当于
x ? x : y
在这种简单情况下,忽略中间操作数的功能不是特别有用。当第一个操作数确实有用或可能(如果它是宏参数)包含副作用时,它才变得有用。然后在中间重复操作数将产生两次副作用。省略中间操作数将使用已经计算的值,而不会产生重新计算它的不良影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句