我最近被介绍了三元运算符。我设法度过了CS学校的一年半,没有一个教授提到过三元运算符。这是我的教授经常使用它们的第一个季度。它们看起来很适合于缩短代码。因此,这个问题将帮助我理解三元运算符的界限以及何时/如何使用它们。有没有办法用一个长语句和一个三元运算符来缩短下面的代码块?
if(age < 18){
minors+=1;
} else if(age < 65){
adults+=1;
}else{
seniors+=1;
}发布于 2016-04-11 06:32:38
您正在更新三个唯一的变量,one使用三元组的方式如下所示
minors += (age < 18) ? 1 : 0;
adults += (age >= 18 && age < 65) ? 1 : 0;
seniors += (age >= 65) ? 1 : 0;发布于 2016-04-11 06:29:09
您可以将其编写为一条语句:
int dummy = (age < 18) ? (minors += 1)
: (age < 65) ? (adults += 1)
: (seniors += 1);此处未使用dummy的值。这只是一种将表达式转换为语句的方法。
请注意,在实践中,我不会考虑这样编写逻辑。代码中有多个副作用,这使得它很难理解。
我认为你现在编写的代码的意图是非常清晰的。根据我的经验,三元表达式有使代码更难读的趋势。
发布于 2016-04-11 06:48:26
三元运算符并不适合您的代码,因为您要更改3个不同的变量。我会让你的代码保持原样。
另一方面,假设你有这个
if (age < 18) {
number += 1;
} else if (age < 65) {
number = 8;
} else if (age < 90) {
number += 2;
} else {
number = 13;
}可以将其重写为类似于switch的形式
number = age < 18 ? number + 1 :
age < 65 ? 8 :
age < 90 ? number + 2 :
13;我认为这是对if版本的改进。然而,以这种方式嵌套三元运算符并不常见,因此如果您使用此版本,可能会使查看您的代码的人感到困惑。
https://stackoverflow.com/questions/36536265
复制相似问题