我试图检查NSString
是否与另一个相等。如果是,我想添加金额,如果不是,我想减去。这是我的代码:
([type isEqualToString:@"Plus"]) ? amount += [amountString doubleValue] : amount -= [amountString doubleValue];
我收到错误:
表达式不可分配
我做错了什么,这意味着我无法分配它?
答案 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;
}