請原諒我的「新手」問題,但問號是什麼,「?」意味着在下面的代碼行?什麼是「?」在以下語句中的意思
self.navigationItem.leftBarButtonItem.title = (editing) ?
NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit");
請原諒我的「新手」問題,但問號是什麼,「?」意味着在下面的代碼行?什麼是「?」在以下語句中的意思
self.navigationItem.leftBarButtonItem.title = (editing) ?
NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit");
這是一個三元語句,?
是條件操作符。聲明基本上是說:
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以外的其他語言提供。
它被稱爲三元運算符,它就像一個if語句,但在一行中。
它是這樣的:
if (editing)
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
else
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
這就是所謂的Ternary operation。
它的意思是,給定下面的代碼:
(condition) ? a : b
的代碼將執行a
如果condition
是true
和b
否則。
在你的情況下,代碼的行爲一樣,如果你寫:
if (editing) {
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
} else {
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
}
這是有條件的經營者:x = a ? b : c
。如果a
爲真,則分配b
至x
,否則分配c
。
其短的if語句
在聲明1> 0下面的代碼檢查,如果其真正的第一組將被執行,後如果假它將運行在後面的代碼「:」
(1 > 0)? true: false;
三元操作符是用來http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#The_Ternary_Operator。 這意味着如果編輯變量爲TRUE,標題將使用NSLocalizedString(@「Done」,@「Done」)進行初始化,否則使用NSLocalizedString(@「Edit」,@「Edit」)進行初始化。
條件?valueIfTrue:valueIfFalse
這可以被解讀爲
if (editing)
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
else
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
這顯然已經回答了(徹底)以上,但我要把我的帽子(用於關閉的機會,有人剛開始學習編程時發生此絆倒):
這裏是一個三元聲明我的純英文的定義(這是什麼)
Variable = what_to_check ? true_value : false_value;
是說:
是what_to_check爲真?好吧,然後將變量設置爲true_value。如果不是,則將Variable設置爲false_value。
非常感謝。 – 2011-04-29 12:49:03
這是一個很好的答案;我只想指出,嚴格地說,這是「條件操作符」;雖然它通常被稱爲「三元」,但「三元」僅僅意味着「需要三個操作數」。 – 2011-04-29 20:43:24
這是真的,感謝評論! – 2011-04-30 02:47:10