-1

可能重复:
问号和冒号(?:三元运算符)在objective-c中是什么意思?

我看过代码,它使用类似...的语法

someValue = someBoolean ? valueOne : valueTwo;

或者类似的东西。

我从来没有用过这个,我不知道它叫什么。

请有人解释如何使用它或提供有关它的资源的链接。

4

6 回答 6

8

是三元算子。

它评估someBoolean条件。

如果是真的,那么传递valueOnesomeValue

如果它是假的,那么传递valueTwosomeValue

它等于:

if(someBoolean)
{
   someValue = valueOne;
}
else
{
   someValue = valueTwo;
}

这是一个很好的链接,它解释了三元运算符

于 2013-01-08T13:51:39.190 回答
3

这称为三元运算符 (?:)

1 ? 2 : 3

1是条件。

当 1 为真时执行 2。

当 1 为假时执行 3。

类似于:(以下不是运行代码,1,2,3 仅显示某些表达式和语句的占位符。

 if(1){ //condition
     2 //true
 }
 else{
     3 //false
 }

您可以将其缩短为:

int bigger;
(10<100) ? bigger=100 : bigger=10;

简而言之:

int bigger = (10<100) ? 100 : 10 ;

笔记:

它的优先顺序是最少的,并且比 if-else 和 switch case 语句慢得多。

于 2013-01-08T13:52:12.127 回答
2

它是一个ternary operator(也称为conditional operator)。您可以在此链接中找到解释。

基本上你的表达是说如果someBoolean是真的 someValue 会得到valueOne,如果不是,它会得到valueTwo

它类似于:

 if(someBoolean)
 {
    someValue = valueOne;
 }
 else
 {
    someValue = valueTwo;
 }

这在您的代码中提供了较少的可见性。如果您想分配一个取决于一个条件的值,我建议使用此运算符。

请注意,它不是特定于 的表达式Objective-C,您也可以在C和中使用它C++

于 2013-01-08T13:53:07.487 回答
0

赋值的结果是 valueOne 是条件为真,而 valueTwo 是条件为假。

在维基百科上看到它。它也适用于其他语言,只需跳过它们并查看 C 语法示例。

于 2013-01-08T13:52:35.807 回答
0

假设用户需要回答一些问题,如果他错了,您将视图的背景颜色更改为红色,如果他正确,则更改为绿色。

- (void)handleAnswer:(BOOL)correct {
    UIColor *color = (correct) ? [UIColor greenColor] : [UIColor redColor];
    self.view.backgroundColor = color;
}
于 2013-01-08T13:53:26.853 回答
0

它的工作原理与以下相同

if (someBoolean)
{
    someValue = valueOne;
}
else
{
    someValue = valueTwo;
}
于 2013-01-08T13:56:11.800 回答