可能重复:
What does the question mark and the colon (?: ternary operator) mean in objective-c?
我见过使用类似......的语法的代码。
someValue = someBoolean ? valueOne : valueTwo;
或类似的东西。
我从来没有用过这个,我不确定它叫什么。
请有人解释如何使用它或提供有关它的资源的链接。
答案 0 :(得分:8)
这是三元组织。
评估someBoolean
条件。
如果确实如此,则将valueOne
传递给someValue
如果为false,则将valueTwo
传递给someValue
等于:
if(someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}
这是一个很好的链接,解释了ternary operator
答案 1 :(得分:3)
这称为三元运算符(?:)
1 ? 2 : 3
1是条件。
当p为真时,执行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语句慢得多。
答案 2 :(得分:2)
ternary operator
(也称为 conditional operator
)。您可以在此link找到解释。
基本上你的表达是说,如果someBoolean
为真,someValue将获得valueOne
,否则会获得valueTwo
。
类似于:
if(someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}
在代码中提供较少的可见性。如果您想要分配一个取决于一个条件的值,我建议使用此运算符。
请注意,它不是Objective-C
特有的表达式,您也可以在C
和C++
中使用它。
答案 3 :(得分:0)
赋值的结果是valueOne是条件为true,valueTwo如果条件为false。
见here on wikipedia。它也使用其他语言,只需跳过它们并查看C语法示例。
答案 4 :(得分:0)
假设用户需要回答一些问题,并且如果他错了,你会将视图的背景颜色更改为红色,如果他是正确的话,则将其更改为绿色。
- (void)handleAnswer:(BOOL)correct {
UIColor *color = (correct) ? [UIColor greenColor] : [UIColor redColor];
self.view.backgroundColor = color;
}
答案 5 :(得分:0)
它的作用与以下相同
if (someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}