不活跃? @“无效”:@“有效”语法?

时间:2012-04-20 02:56:06

标签: objective-c ios

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

? :它似乎是一个布尔条件结构(错误的术语),但我并没有得到它。不知道它叫什么,所以不能查找。

似乎是这样的:

  

someBooleanValue? 如果是假的,请使用 之前冒号:否则使用   在

之后 是什么

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

(并且不像文件那样难以格式化像rilly这样的ObjC)

    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];

5 个答案:

答案 0 :(得分:2)

这个?:被称为条件运算符三元运算符

它代表一个简单的条件

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

可以翻译为

x = CONDITION ? a : b

从中你可以得出你想要完成/理解的功能。请记住,虽然您可以使用它作为正常的if / else-if / else结构的替代,但是对于任何“赋值相关操作”中的三元运算符的使用被认为是错误的编程。

the wikipedia page for it中,您可以找到各种编程语言中使用的条件运算符的各种示例。检查this one,三元运算符页面。

Obs:事实证明,三元运算符不一定是条件表达式,而是任何带有三个参数的运算符。因为对于大多数编程语言来说,唯一的三元运算符是内联 - 如果......好吧,那就是它通常被称为。

答案 1 :(得分:1)

它被称为conditional operator,一种三元运算符(而不是更熟悉的二进制 a+b一元 !flag运营商)。

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

答案 2 :(得分:1)

您可以阅读更多信息here

当涉及许多简单的if时,使用此运算符可以大大减少代码长度。

答案 3 :(得分:0)

它是一个三元运算符,但你向后运行 - 如果布尔值为真,那么在冒号之前做事,否则,在结束之后做。

答案 4 :(得分:0)

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

表达式值如果为true 值,如果为false ;

例如,你可以使用它来做这样的事情来避免if - else:

int maxValue = a > b ? a : b;

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