在 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)}
我正在尝试如下操作:
"""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)}