2011-03-29 35 views
23

確實objective-c有更短的寫這行代碼的方法嗎?確實objective-c有更短的寫這行代碼的方法嗎?

a = b ? b : c; 

這是一個方式說,一個等於只要它不是零,否則C到B。也就是說,有沒有什麼像紅寶石的運算符「|| =」

+2

就我所知Objective-C沒有空合併運算符。 – BoltClock 2011-03-29 11:06:44

+1

我很好奇 - 儘管爲了可讀性,它仍然值得像這樣的一行:self.nameTextField.text =(self.weConfig.title)? self.weConfig.title:@「」; – Greg 2011-03-29 11:09:43

回答

76

請問以下工作爲您提供:

a = b ? : c; 

(這個語法是GNU擴展至C,所以你可能需要使用GCC而不是LLVM - http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Conditionals.html#Conditionals)。

+7

我在Xcode 3上使用LLVM 1.7測試了它,它工作正常。 – BoltClock 2011-03-29 11:14:12

+0

是的,它似乎 - 非常酷 – Greg 2011-03-29 20:56:13

+1

很好:-)錯過了從C#返回的空合併。 '?:'非常好地訣竅。 – 2012-08-15 20:39:43

2

這是儘可能短,你可以得到它在Objective-C!這是你在那裏的一個很好的小測試。

唯一的其他短的路我能想出如下(我不會推薦它可讀性原因,它不是越短你的!):

if (b) a = b; else a = c; 
相關問題