该代码段
if (addMore) {
y = x + moreValue;
} else {
y = x;
}
可以压缩为:
y = (addMore ? x + moreValue : x);
大多数具有Java经验的程序员都熟悉。
但是我想知道是否可以将两个以上的状态压缩为一行,例如:
if (addMore) {
y = x + moreValue;
} else if (50 < x) {
y = 50;
} else {
y = x;
}
如何将此(如果可能的话)压缩为一个语句,例如:
y = (addMore ? x + moreValue {SOMETHING IN HERE} : x);
最佳答案
我经常使用这样的构造,让人想起Clojure的cond
:
y =
addMore ? x + moreValue :
50 < x ? 50 :
x;
我发现可读性没有问题,恰恰相反。我喜欢这样,我可以确定整个构造都是要为y赋值。对于经典的if-else if组合,这一点都不明显。