我想爲012語句使用簡寫。如果在一行處發表聲明,我該如何寫?以及如何比較他們?知道這裏有同樣的問題。但我的聲明沒有其他所以我沒有別的聲明無法做到這一點。如果聲明簡稱爲
public int compareTo(Uyum u) {
if (uyum < u.uyum)
return -1;
if (uyum > u.uyum)
return 1;
return 0;
}
我想爲012語句使用簡寫。如果在一行處發表聲明,我該如何寫?以及如何比較他們?知道這裏有同樣的問題。但我的聲明沒有其他所以我沒有別的聲明無法做到這一點。如果聲明簡稱爲
public int compareTo(Uyum u) {
if (uyum < u.uyum)
return -1;
if (uyum > u.uyum)
return 1;
return 0;
}
您可以使用三元運算符:
return uyum < u.uyum ? -1
: uyum > u.uyum ? 1
: 0;
對不起,你的代碼搞亂了,但我只是想證明這個習語可以非常可讀和直觀,不管有多少條件。 –
@markoTopolnik感謝使代碼可讀,始終開放給有經驗人士的建議:) – NINCOMPOOP
其實,最後一個:0應該有一個更多級別的縮進,是完全可讀的,不是? – mdm
,你或許需要:
return a < b ? -1 : (a > b ? 1 : 0);
@Marko - 也許你不需要它們,我是這麼做的:) – Ingo
實際上,這個成語可以很好地寫成幾行,看起來就像Lisp的'cond'宏,或者從條件到結果的映射。 –
順便說一句,如果你有兩個以上的條件,parens只會使情況變得更糟。 –
內嵌if語句(問號)如果你有兩個狀態通常只期望。你的代碼的可讀性非常重要。 在你的情況下,你有3個狀態(0,1和-1);我不會推薦使用內聯if語句。
例內嵌if語句:
String value = variable==null?"defaultvalue":variable;
這個if語句符號被稱爲ternary operator
在我看來,這u.uyum
是一個int,在這種情況下,爲什麼不跟隨滿意?
return Integer.compare(uyum, u.uyum)
如果你真的必須使用三元運算符,你可以做別人都提示:
return uyum > u.uyum ? 1 : uyum == u.uyum ? 0 : -1
這往往是在雖然皺起了眉頭,因爲它並不十分清晰。
你怎麼能說這是一個Int?它可能很短,字符,雙重,甚至布爾。因此'((可比較的)uyum)',它會變成正確的類型。 – Ingo
不會導致編譯警告(不安全的調用compareTo(T)yadda yadda yadda')雖然? –
你的意思是鑄造成「可比較的
重複:http://stackoverflow.com/questions/8898590/short-form-for-java-if-statement –
使用三元運算。 – JNL
'return uyum u.uyum? 1:0;' –