在groovy中使用“any”函数总是返回最后一项闭包的结果

时间:2016-07-25 15:18:57

标签: groovy closures any

我正在尝试以下内容:

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

结果是:

foo - foo
foo - bar
baz - bar
false

我想测试多行字符串的任何行

"""foo
bar"""

出现在数组['foo', 'baz']中。

但是如果字符串中存在foo,它会返回false事件。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试:

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

答案 1 :(得分:0)

你可以这样做的一种方式:

 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
}