groovy - Groovy 的非参数 grep() 和 findAll() 方法之间有什么区别吗?

标签 groovy

来自 Groovy JDK:

public Collection grep()

Iterates over the collection of items which this Object represents and returns each item that matches using the IDENTITY Closure as a filter - effectively returning all elements which satisfy Groovy truth.



public Collection findAll()

Finds all items matching the IDENTITY Closure (i.e. matching Groovy truth).

最佳答案

简短的回答:结果是一样的。

长答案:grep通常使用过滤器对象,在该对象上 isCase然后被调用。因此,grep 的参数通常不是 Groovy 闭包。对于 findAll你使用一个闭包作为参数,如果闭包的结果被评估为真,它就会被纳入结果集合。

现在重要的是要知道闭包也有一个 isCase 方法。 Closure#isCase(Object)将使用参数作为闭包的参数来执行闭包,然后使用 Groovy Truth 评估其结果。对于身份关闭,即。 {it} ,这意味着闭包将返回提供给它的内容,因此 Groovy 会将 Groovy Truth 应用于 grep 调用的参数。结果与 findAll 相同。

关于groovy - Groovy 的非参数 grep() 和 findAll() 方法之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703707/

相关文章:

java - 我可以使用 groovy 的默认 getter/setter 来帮助实现 java 接口(interface)吗?

html - 如何解决 Groovy 的 XmlSlurper 由于 DOCTYPE 和 DTD 限制而拒绝解析 HTML 的问题?

regex - 组合多个正则表达式模式

grails - 在 grails 中使用服务的最佳方式是什么

Jenkins:使用外部脚本与在 Groovy 中编码工作

regex - 如何在 Groovy 中将列表与正则表达式匹配

Groovy:用同名变量替换字符串中的模板

mysql - 如何在 Groovy 中收集 sql 行

spring - Java/Groovy 如何捕获 Spring dao 系列异常

java - groovy 调用 Java 父类(super class)中的私有(private)方法