2017-03-08 98 views
1

我是Groovy的新手,無法理解此代碼的功能。Groovy:什麼是「?」意味着在這種情況下?

def aList 
def foo = aList.size() == 1 ? aList[0] : null 

試圖打破它,我覺得

  • aList.size() == 1 ?被斷言列表的大小爲1,而不是空。
  • aList[0] : null意味着在aList[0]默認值設置爲空

foo因此是在列表中的第一項的值,並且默認爲null。

這是正確的,還是我誤解了這是如何表現?

回答

4

這是一個ternary conditional operator

它採用以下形式:

SOME_BOOLEAN ? IF_TRUE : ELSE 

所以你的情況,這是一樣的:

def foo = null 
if(aList.size() == 1) { 
    foo = aList[0] 
} 
+0

謝謝你的簡潔解釋,我想我現在明白了。感謝鏈接,我努力通過搜索來解釋這一點,以找到有意義的結果。 – Donglecow

1

它的一個行的if語句。擴大這應該是這樣的:

if(aList.size() == 1) { 
    foo = aList[0]; 
} 
else { 
foo = null; 
} 

。希望清除它。

+0

是的,謝謝! – Donglecow