簡體   English   中英

什么是?:運算符

[英]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等於0a 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>

如果條件為真,則將其視為值,否則將被視為值。

請參考http://en.wikipedia.org/wiki/%3F:

它是三元運算符 ,因為Objective-C是C的超集,您可以使用此運算符。

關於此的一些教程

a = x? :y;

表達式相當於

a = x? x:y;

它是 ? 運算符,稱為三元運算符,以這種方式使用:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM