web-dev-qa-db-ja.com

結果がnullでない場合にのみ収集する

コレクションがあり、特定の要素を見つけて変換したいと思っています。私はこれを2つのクロージャーで行うことができますが、1つだけで可能かどうか疑問に思いました。

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

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

result = result.collect {
   it /= 2
}

私の本当のユースケースはGradleです。特定のファイルの束を見つけて、それらを完全修飾パッケージ名に変換したいと思います。

20
Lerp

findResults を使用できます:

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