2014-01-07 4 views
12

Ich habe eine Sammlung und ich möchte bestimmte Elemente finden und transformieren. Ich kann das in zwei Schließungen machen, aber ich frage mich, ob es mit nur einem möglich ist?Sammeln Sie nur, wenn das Ergebnis nicht null ist

def c = [1, 2, 3, 4] 

def result = c.findAll { 
    it % 2 == 0 
} 

result = result.collect { 
    it /= 2 
} 

Mein wahrer Anwendungsfall mit Gradle ist, mag ich eine bestimmte Reihe von Dateien zu finden und zu transformieren sie zu ihren vollständig qualifizierten Paketnamen.

Antwort

23

können Sie findResults verwenden:

c.findResults { i -> 
    i % 2 == 0 ? // if this is true 
     it/2 : // return this 
     null  // otherwise skip this one 
} 
+0

Das ist die ganze Zeit direkt vor meiner Nase war ... Danke. (Wird als Antwort akzeptiert, wenn die Frage alt genug ist) – Lerp

+0

Hmm, das geht nicht ganz so wie in meinem OP? 'findResults' stoppt nach dem ersten Nicht-Null-Element. – Lerp

+0

Sie haben 'findResult' eingegeben, nicht' findResults' ;-) –