使用较短的if语句时,表达式不可赋值错误

时间:2015-06-16 05:49:35

标签: ios objective-c if-statement

我试图检查NSString是否与另一个相等。如果是,我想添加金额,如果不是,我想减去。这是我的代码:

([type isEqualToString:@"Plus"]) ? amount += [amountString doubleValue] : amount -= [amountString doubleValue];

我收到错误:

  

表达式不可分配

我做错了什么,这意味着我无法分配它?

4 个答案:

答案 0 :(得分:1)

([type isEqualToString:@"Plus"]) ? (amount += [amountString doubleValue]) : (amount -= [amountString doubleValue]);

答案 1 :(得分:1)

您只需从三元表达式中返回正值或负值,并将其添加到金额 -

amount+= ([type isEqualToString:@"Plus"]) ? [amountString doubleValue] :  -[amountString doubleValue];

答案 2 :(得分:1)

如果你想进行一些计算,那么你应该用括号写下来。

试试这个

([type isEqualToString:@"Plus"]) ? (amount -= [amountString doubleValue]) : (amount += [amountString doubleValue]);
希望它有所帮助。

答案 3 :(得分:1)

首先,?: 不是“更短的if语句”。它甚至不是一个声明。它是条件运算符,如果您使用它,则会得到表达式你不应该滥用它来表达你目前的声明。

问题在于?:运算符相对于=运算符的优先级。表达式

cond ? var = expr1 : var = expr2;

被解析为

((cond) ? (var = expr1) : var) = expr2;

其中LHS不是左值,因此它不能编译。你需要明确地将条件运算符的RHS括起来,但是在可读性方面,你可以使用真正的if语句更好:

if ([type isEqualToString:@"Plus"]) {
    amount += amountString.doubleValue;
} else {
    amount -= amountString.doubleValue;
}