原谅我的“新手”问题,但问题是什么,“?”在fololowing代码行中意味着什么?
self.navigationItem.leftBarButtonItem.title = (editing) ?
NSLocalizedString(@"Done", @"Done") : NSLocalizedString(@"Edit", @"Edit");
答案 0 :(得分: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之外的许多语言。
答案 1 :(得分:4)
它被称为三元运算符,它就像一个if语句但在一行中。
就像:
if (editing)
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
else
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
答案 2 :(得分:4)
这是条件运算符:x = a ? b : c
。如果a
为真,则会b
指定x
,否则会指定c
。
答案 3 :(得分:3)
它被称为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");
}
答案 4 :(得分:3)
简短的if语句
在声明1>下面的代码中检查0是否为真,第一组将被执行,在“?”之后如果它是假的,它将运行“:”后面的代码
(1 > 0)? true: false;
答案 5 :(得分:2)
使用了三元运算符http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#The_Ternary_Operator。 这意味着如果编辑变量为TRUE,则使用NSLocalizedString(@“Done”,@“Done”)初始化标题,否则使用NSLocalizedString(@“Edit”,@“Edit”)初始化。
答案 6 :(得分:2)
条件? valueIfTrue:valueIfFalse
这可以理解为
if (editing)
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done");
else
self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit");
答案 7 :(得分:1)
这是三元运作。请查看维基百科中的以下说明 - http://en.wikipedia.org/wiki/Ternary_operation#C.2C_C.2B.2B.2C_C.23.2C_Vala.2C_Objective-C.2C_Java.2C_JavaScript.2C_ActionScript
答案 8 :(得分:1)
这显然已经(完全)在上面得到了回答,但是我正在戴上帽子(因为有些人只是学习编程偶然发现了这一点):
这是我对三元语句的简明定义(这是什么)
Variable = what_to_check ? true_value : false_value;
说:
是what_to_check是真的吗?好的,然后将Variable设置为true_value。如果不是,请将Variable设置为false_value。