请原谅我的“新手”问题,但问号是什么,“?”意味着在下面的代码行?什么是“?”在以下语句中的意思
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