在这个 iOS教程中,有一行代码?
后跟一个:
.在代码注释的上下文中,我认为它是某种三元操作,然而,这显然不是三元运算符的语法.这个代码中有什么名称?:
?
// Initialize the list of weather items if it doesn't exist
NSMutableArray *array = self.xmlWeather[@"weather"] ?: [NSMutableArray array];
Run Code Online (Sandbox Code Playgroud)
Car*_*rum 29
这是GCC扩展:
6.7具有省略操作数的条件
可以省略条件表达式中的中间操作数.然后,如果第一个操作数非零,则其值为条件表达式的值.
因此,表达
Run Code Online (Sandbox Code Playgroud)x ? : y
具有
x
if非零的值; 否则,价值y
.这个例子完全等同于
Run Code Online (Sandbox Code Playgroud)x ? x : y
在这个简单的例子中,省略中间操作数的能力并不是特别有用.当它变得有用时是第一个操作数,或者可能(如果它是一个宏参数),包含副作用.然后在中间重复操作数将执行两次副作用.省略中间操作数使用已经计算的值而没有重新计算它的不良影响.
归档时间: |
|
查看次数: |
4712 次 |
最近记录: |