什么是?:运算符

Neb*_*Fox 4 c objective-c operators

在Objective-C代码的示例中,我找到了这个运算符

self.itemViews[@(0)] ?: [self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]];
Run Code Online (Sandbox Code Playgroud)

代码在Apple LLVM 4.2下编译.

我遇到的唯一一件事就是成为一个向量运算符,但我不认为Objective-C,就C而言,它有向量运算符.那么有人可以提供此运营商的参考和/或文档.

oua*_*uah 11

?:是C 条件运算符.

a ? b : c
Run Code Online (Sandbox Code Playgroud)

产率b值,如果a是比不同0并且c如果a是等于0.

GNU扩展(带有省略操作数的条件)允许在没有第二个操作数的情况下使用它:

 x ? : y 
Run Code Online (Sandbox Code Playgroud)

相当于

 x ? x : y
Run Code Online (Sandbox Code Playgroud)


Aar*_*nin 5

你熟悉三元运算符吗?通常出现在样式中:

test ? result_a : result_b;
Run Code Online (Sandbox Code Playgroud)

这里发生的所有事情是没有给出第一个分支,所以在积极的情况下不会发生任何事情。类似于以下内容:

test ?: result_b;
Run Code Online (Sandbox Code Playgroud)

由于 C 的计算方式,result_b如果 test 不真实,这将返回,否则将返回test

在您给出的示例中 - 如果缺少视图,它会回退到检查数据源以提供替换值。