代码片段
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);
答案 0 :(得分:2)
condition1 ? (condition1-2 ? action 1-2: action-not-1-2) : action-not-1
答案 1 :(得分:1)
y = (addMore ? x + moreValue : (50 < x ? 50 : x));
但正如评论中所说,这比if..else语句的可读性差得多,所以我认为应该避免这种说法。
答案 2 :(得分:1)
1。一句臭名昭着的谚语.....“任何傻瓜都可以编写计算机可以理解的代码,但只有优秀的程序员才能编写人类可以理解的代码.... /强>“
2。更多关于readability
和understandability
。
但这仍然是你的答案......
(addMore ? x + moreValue : (50 < x ? 50 : x))
//将此内容分配给y
答案 3 :(得分:1)
我使用这样的结构,它让人联想到Clojure的cond
:
y =
addMore ? x + moreValue :
50 < x ? 50 :
x;
我发现没有可读性的问题,恰恰相反。我喜欢我可以确定整个构造是关于为y赋值。对于经典的if-else if组合来说,这一点并不明显。
答案 4 :(得分:1)
Using Ternary operator, more than one condition can check.
if First condition is true then compare with second value.
y = (addMore ? x + moreValue : (50 < x ? 50 : x));