0

有人可以解释一下inactive ? @"inactive": @"active"吗?

这 ?: 似乎是一个布尔条件结构(错误的术语),但我不太明白。不知道叫什么所以查不到。

看起来像:

一些布尔值?如果它是错误的使用 冒号之前的内容:否则使用 之后的内容

我知道它被用来确定使用哪个字符串作为格式标记(在下面的代码中)。我只是不知道这是什么?:位被调用,它可能有什么限制/注意/滥用。

(而且 ObjC 不是rilly很难以文明的方式格式化)

    UIAlertView* av = [[UIAlertView alloc] initWithTitle:@"Hey" 
                                             message:[NSString 
                                    stringWithFormat:@"While %@, I received a local notification: %@",
                                                      inactive ? @"inactive": @"active", n.alertBody] 
                                            delegate:nil 
                                   cancelButtonTitle:@"OK" otherButtonTitles:nil];
[av show];
4

5 回答 5

2

这 ?: 东西称为条件运算符三元运算符

它代表一个简单的条件

if ( CONDITION )
    x = a;
else
    x = b;

可以翻译成

x = CONDITION ? a : b

从中您可能可以得出您尝试完成/理解的功能。请记住,尽管您可以将其用作普通 if/else-if/else 结构的替代品,但在任何“赋值相关操作”之外对三元运算符的使用进行编程都被认为是错误的。

它的维基百科页面中,您可以找到各种不同编程语言中使用的条件运算符的示例。也检查这个,三元运算符页面。

Obs:事实证明,三元运算符不一定是条件表达式,而是任何接受三个参数的运算符。因为对于大多数编程语言来说,唯一的三元运算符是 inline-if... 好吧,这就是它通常所说的。

于 2012-04-20T03:20:23.787 回答
1

它被称为条件运算符,一种三元运算符(与更熟悉的二元 a+b一元运算 !flag符相反)。

条件运算符接受一个条件,对其进行评估,并根据该结果返回其第二个或第三个操作数。

于 2012-04-20T02:58:48.390 回答
1

您可以在此处阅读更多信息。

if涉及到很多 simple 时,使用该运算符可以大大减少代码长度。

于 2012-04-20T03:00:40.593 回答
0

它是一个三元运算符,但你把它倒过来了——如果布尔值是真的,那么做冒号之前的事情,否则,做之后的事情。

于 2012-04-20T03:00:11.690 回答
0

这称为三元运算符,它的工作方式与您描述的完全一样:

表达真值假值

例如,你可以用它来避免 if - else:

int maxValue = a > b ? a : b;

编辑: @dasblinkenlight 是正确的,您所说的运算符实际上称为条件运算符,它是一种三元运算符。

于 2012-04-20T03:01:02.090 回答