2011-04-29 86 views
2

請原諒我的「新手」問題,但問號是什麼,「?」意味着在下面的代碼行?什麼是「?」在以下語句中的意思

self.navigationItem.leftBarButtonItem.title = (editing) ? 
    NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit"); 

回答

12

這是一個三元語句,?是條件操作符。聲明基本上是說:

if (editing) { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
} else { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
} 

你可以把它想:

? - 如果此前的說法是真實的,之後立即着手編寫代碼。

: - 否則,在此之後立即運行代碼。

您可以在這裏閱讀更多http://en.wikipedia.org/wiki/Ternary_operation。你會發現這個結構可用C/Objective-C以外的其他語言提供。

+0

非常感謝。 – 2011-04-29 12:49:03

+1

這是一個很好的答案;我只想指出,嚴格地說,這是「條件操作符」;雖然它通常被稱爲「三元」,但「三元」僅僅意味着「需要三個操作數」。 – 2011-04-29 20:43:24

+0

這是真的,感謝評論! – 2011-04-30 02:47:10

4

它被稱爲三元運算符,它就像一個if語句,但在一行中。

它是這樣的:

if (editing) 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
else 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
3

這就是所謂的Ternary operation

它的意思是,給定下面的代碼:

(condition) ? a : b 

的代碼將執行a如果conditiontrueb否則。

在你的情況下,代碼的行爲一樣,如果你寫:

if (editing) { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
} else { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
} 
4

這是有條件的經營者:x = a ? b : c。如果a爲真,則分配bx,否則分配c

3

其短的if語句

在聲明1> 0下面的代碼檢查,如果其真正的第一組將被執行,後如果假它將運行在後面的代碼「:」

(1 > 0)? true: false; 
2

條件?valueIfTrue:valueIfFalse

這可以被解讀爲

if (editing) 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
else 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
1

這顯然已經回答了(徹底)以上,但我要把我的帽子(用於關閉的機會,有人剛開始學習編程時發生此絆倒):

這裏是一個三元聲明我的純英文的定義(這是什麼)

Variable = what_to_check ? true_value : false_value; 

是說:

是what_to_check爲真?好吧,然後將變量設置爲true_value。如果不是,則將Variable設置爲false_value。