的第一個參數的值:獲得我想獲得使用第一個參數的值三元表達做類似的三元表達
a() ? b(value of a()) : c
有沒有辦法做到這一點? a是一個運行多次並返回一個列表的代價高昂的函數。如果列表爲空,我需要進行不同的計算。 我想用三元表達來表達它。
我試着這樣做:
String a()
{
"a"
}
def x
(x=a()) ? println(x) : println("not a")
但是它是相當難看......
的第一個參數的值:獲得我想獲得使用第一個參數的值三元表達做類似的三元表達
a() ? b(value of a()) : c
有沒有辦法做到這一點? a是一個運行多次並返回一個列表的代價高昂的函數。如果列表爲空,我需要進行不同的計算。 我想用三元表達來表達它。
我試着這樣做:
String a()
{
"a"
}
def x
(x=a()) ? println(x) : println("not a")
但是它是相當難看......
不知道是否有可能與三元運算符,但也許記憶化是解決方案:
Closure<String> a = {
'a'
}.memoize()
a() ? println(a()) : println("not a")
可以使用常規收集:
def result = a().collect { "Got $it" } ?: "Nope"
如果你對自己擔憂的()返回一個包含空值,你可以使用的findAll列表。
def result = a().findAll { it }.collect { "Got $it" } ?: "Nope"
請問您能否把它放在更廣的範圍內? – Opal