?:在Objective-C中

利亚希姆

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章