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
}