[英]What is the ?: operator
在Objective-C代碼的示例中,我找到了這個運算符
self.itemViews[@(0)] ?: [self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]];
代碼在Apple LLVM 4.2下編譯。
我遇到的唯一一件事就是成為一個向量運算符,但我不認為Objective-C,就C而言,它有向量運算符。 那么有人可以提供此運營商的參考和/或文檔。
?:
是C 條件運算符 。
a ? b : c
如果a
不等於0
則產生b
值,如果a
等於0
則a
c
。
GNU擴展( 帶有省略操作數的條件 )允許在沒有第二個操作數的情況下使用它:
x ? : y
相當於
x ? x : y
你熟悉三元運算符嗎? 通常在風格中看到:
test ? result_a : result_b;
這里發生的一切都是沒有給出第一個分支,所以在正面情況下不會發生任何事情。 類似於以下內容:
test ?: result_b;
由於C是評估的方式,這將返回result_b
如果測試untruthy,否則將返回test
。
在您給出的示例中 - 如果缺少視圖,則會回退到檢查數據源以提供替換值。
以上稱為三元運算符或條件運算符。
語法是,
<condition>?<true_part>:<false_part>
如果條件為真,則將其視為值,否則將被視為值。
它是 ? 運算符,稱為三元運算符,以這種方式使用:
condition ? true-branch : false-branch;
當條件求值為真(非零)時,執行:
之前的分支,否則執行另一個分支。 這甚至可能返回一個值:
value = condition ? true-branch : false-branch;
在你的情況下,返回值是ommited,真正的分支是空的(無事可做)。 然后返回condition
的返回值,但不在您的示例中使用。
相當於
if (!self.itemViews[@(0)])
[self.dataSource slidingViewStack:self viewForItemAtIndex:0 reusingView:[self dequeueItemView]];
這是非常好的編程風格。
此運算符在Objective C中使用 ,此運算符用於條件運算符。是運行一個語句還是其他語句取決於所使用的邏輯術語和您提供的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.