三元运算符/用三元运算符替换if / else

时间:2015-06-23 19:38:49

标签: ios objective-c

我正在尝试用三元运算符替换if else语句

如果伏特加24美元的成本以折扣价18(24 * .75)返回

这个if else循环工作正常并给我想要的结果但是当我 尝试将其转换为三元我在xcode中得到“预期':'”错误。我是什么 在这里做错了吗?

三元运算符就像这样工作 (条件)? (executeFirst):( executeSecond)

这就是我所拥有的:

NSUInteger cost = 24;
if (cost == 24) {
    return cost *= .75);
} else {
    return nil;
}    
NSUInteger cost = 24;
(cost = 24) ? return cost *= .75 : return nil;

return cost;

}

4 个答案:

答案 0 :(得分:2)

三元运算符用于为某个变量赋值。

使用

cost = (cost == 24) ? cost * 0.75 : cost;

或:

return (cost == 24) ? cost*0.75 : cost;

注意'=='和'='之间的区别。您必须在代码中输入错字或忘记它。 '=='符号检查左右值是否相等,'='将正确的值赋给左侧(变量)。

答案 1 :(得分:0)

您应该将三元运算符值分配给某个变量,然后将其返回。

NSUInteger cost = 24;
cost = (cost == 24) ? cost * .75 : nil;
return cost;

或者

NSUInteger cost = 24;
return (cost == 24) ? cost * .75 : nil;

答案 2 :(得分:0)

你想要的是:

NSUInteger cost = 24;
return (cost == 24) ? cost *= .75 : return nil;

2件事:

  1. 三元运算符的第一部分(条件)应该是布尔值,您之前有一个分配(===

  2. 返回三元运算符的结果。

答案 3 :(得分:0)

三元运算符必须评估某些东西(将其视为具有返回值的迷你函数)。对于三元condition ? one : two,您无法在x = 3one处发表声明(例如two);他们必须是表达。所以在你的情况下它将是

return (cost == 24 ? 0.75 * cost : nil);