0
A
回答
10
這是一個表達式,而不是一個語句,這意味着它總是評估一些東西。如果沒有「其他部分」,那麼表達式就不會評估測試是否爲假。所以,不,沒有別的,沒有什麼類似的。
我喜歡使用conditional operator的事情是,你可以像
foo = a > b ? c : d;
分配的東西,閱讀它,你知道富了分配給它的東西,不管測試是否是真實的。因此,它爲您提供了一種方法來指示取決於某個測試的值。
Groovy的有一些類似的操作符:
?:
,Elvis操作符,分配值在右邊作爲缺省,如果左邊的表達式爲空。
?.
,safe-null運算符,如果左側評估爲null,則評估爲null。這適用於你有一連串可能爲空的事情的情況,比如foo?.bar?.baz
,如果某些內容爲空,但寧願不輸出所有空檢查,你寧願不用NPE炸燬。
+0
該死,打我24秒。 – Antimony 2013-02-20 22:13:30
3
不,沒有。這是沒有道理的。
?:
是三元比較運算符 - 表達式。如果沒有其他語句,表達式的價值是什麼? C#有一個簡寫版本??
,但這只是語法上的糖,Java沒有任何類似的東西。
2
我猜你正在使用它來爲var分配一個值,我將其稱爲「c」,這個想法是你只想在if語句爲真時分配值。正常的方法是:
if(a > b) c = a;
但是,如果你真的想使用三元語法你可以寫:
c = a > b ? a : c;
注意,三元括號是可選的,所以我忽略他們。
..「else」部分是可選的,不是? – mre 2013-02-20 22:10:15
如果表達式爲假,那麼值會是什麼? – 2013-02-20 22:11:15
沒有'else'然後只是做'if(a> b)z = a'。我不明白你的意思。 – Shivam 2013-02-20 22:12:35