我看过代码,它使用类似...的语法
someValue = someBoolean ? valueOne : valueTwo;
或者类似的东西。
我从来没有用过这个,我不知道它叫什么。
请有人解释如何使用它或提供有关它的资源的链接。
我看过代码,它使用类似...的语法
someValue = someBoolean ? valueOne : valueTwo;
或者类似的东西。
我从来没有用过这个,我不知道它叫什么。
请有人解释如何使用它或提供有关它的资源的链接。
是三元算子。
它评估someBoolean
条件。
如果是真的,那么传递valueOne
给someValue
如果它是假的,那么传递valueTwo
给someValue
它等于:
if(someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}
这是一个很好的链接,它解释了三元运算符
这称为三元运算符 (?:)
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 语句慢得多。
它是一个ternary operator
(也称为conditional operator
)。您可以在此链接中找到解释。
基本上你的表达是说如果someBoolean
是真的 someValue 会得到valueOne
,如果不是,它会得到valueTwo
。
它类似于:
if(someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}
这在您的代码中提供了较少的可见性。如果您想分配一个取决于一个条件的值,我建议使用此运算符。
请注意,它不是特定于 的表达式Objective-C
,您也可以在C
和中使用它C++
。
赋值的结果是 valueOne 是条件为真,而 valueTwo 是条件为假。
在维基百科上看到它。它也适用于其他语言,只需跳过它们并查看 C 语法示例。
假设用户需要回答一些问题,如果他错了,您将视图的背景颜色更改为红色,如果他正确,则更改为绿色。
- (void)handleAnswer:(BOOL)correct {
UIColor *color = (correct) ? [UIColor greenColor] : [UIColor redColor];
self.view.backgroundColor = color;
}
它的工作原理与以下相同
if (someBoolean)
{
someValue = valueOne;
}
else
{
someValue = valueTwo;
}