在 groovy 中使用 "any" 函数总是 return 最后一个项目关闭的结果

Using "any" function in groovy always return the result of the last item closure

我正在尝试如下操作:

"""foo
bar""".eachLine { line ->
    ['foo', 'baz'].any{
        println(it + ' - ' + line)
        line == it
    }
}

结果是:

foo - foo
foo - bar
baz - bar
false

我想测试多行字符串中是否有任何行

"""foo
bar"""

存在于数组 ['foo', 'baz'] 中。

但是如果 foo 出现在字符串中,这里 returns 错误事件。

我做错了什么?

您可以这样做的一种方法:

 def multiLine = ("""foo
bar""")
List lines = multiLine.split("\n") as List
def lookingFor = ['foo','baz']

if (lookingFor.intersect(lines).size() > 0) {
        println "true"
        return true
}

尝试:

"""foo
bar""".split('\n').any { line -> ['foo', 'baz'].contains(line)}