[英]Why can't you make conditional assignment in short hand IF statement?
我正在尝试为我的二十一点游戏更新软计数,以说明正在播放的Ace(值11或1)。 使用简短的IF语句时,为什么第一行代码不正确,但是第二行可以使用? 这种if语句是否受限制?
(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
softcount += (counter > 1) ? 1 : value; // good
三元必须被视为一种评估某种事物的方式,而不是一种应用处理的方式。
所以它期望之后有一些表达式?
但是您在第一个代码中写了语句: softcount+=1
和(softcount+=value)
。
在第二个代码中,可以,因为您指定了两个表达式: 1
和value
。
此外,您是否真的觉得此代码简而言之?
(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
您重复增量部分。
您所需要的只是:
if (counter > 1) { softcount+=1;} else {softcount+=value;)
这只是语言的定义方式。
通过添加;
只能将某些表达式(语句表达式)制成语句;
。 (语句表达式+ ;
是一个表达式语句 )。
ExpressionStatement:
StatementExpression ;
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
条件表达式不是语句表达式。
它称为三元运算符,仅在您想根据条件返回值时使用。 它的主要目的是避免进行简单评估。 在您的情况下,应使用if else。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.