该代码段

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组合,这一点都不明显。

09-11 17:52