Groovy 仅当结果不为空时收集

Groovy 仅当结果不为空时收集,groovy,find,gradle,collect,Groovy,Find,Gradle,Collect,我有一个收藏,我想找到某些元素并对它们进行转换。我可以在两个闭包中完成这项工作,但我想知道是否只有一个闭包就可以完成 def c = [1, 2, 3, 4] def result = c.findAll { it % 2 == 0 } result = result.collect { it /= 2 } 我真正的用例是Gradle,我想找到一组特定的文件,并将它们转换为完全限定的包名。您可以使用: 此外,如果所有元素都不满足标准(闭包)的话,您将得到[],而这些标准一直在

我有一个收藏,我想找到某些元素并对它们进行转换。我可以在两个闭包中完成这项工作,但我想知道是否只有一个闭包就可以完成

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

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

result = result.collect {
   it /= 2
}
我真正的用例是Gradle,我想找到一组特定的文件,并将它们转换为完全限定的包名。

您可以使用:


此外,如果所有元素都不满足标准(闭包)

的话,您将得到
[]
,而这些标准一直在我的眼皮底下。。。非常感谢。(当问题足够大时会接受作为答案)嗯,这和我的OP不太一样吗
findResults
在第一个非空元素之后停止。您键入的是
findResult
不是
findResults
;-)啊,这解释了为什么我找不到它,我在看
集合
文档,而不是
可编辑的
文档,
集合
文档只有
findResult
。是的,在文档中很难找到一些东西。。。列表、Iterable、集合或对象有时都是候选页面;-)
def c = [1, 2, 3, 4]
c.findResults { i ->
        i % 2 == 0 ?    // if this is true
            i / 2 :    // return this
            null        // otherwise skip this one
    }