仅在结果不为null时收集

时间:2014-01-07 13:37:36

标签: groovy find gradle collect

我有一个集合,我想找到某些元素并对其进行转换。我可以在两个闭包中做到这一点,但我想知道是否有可能只有一个?

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

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

result = result.collect {
   it /= 2
}

我的真实用例是使用Gradle,我想找到一组特定的文件并将它们转换为完全限定的包名。

1 个答案:

答案 0 :(得分:31)

您可以使用findResults

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