举例来说..
def data = [1,2,3,4,5,6,7]
def someFilter = {it-> it % 2 == 0}
def newData = data.findAll{it,someFilter ->
someFilter(it)
}
newData
给我一个错误..
当前范围已包含名称someFilter的变量 在第5行,第27列
是否可以将一个闭包(可能是一个非常的)传递给另一个闭包?
谢谢
答案 0 :(得分:5)
你可以传递闭包。我相信这就是你的意图:
def data = [1,2,3,4,5,6,7]
def someFilter = {it-> it % 2 == 0}
def newData = data.findAll someFilter
newData // results in [2, 4, 6]
匿名传递关闭,
def newData = data.findAll { it % 2 == 0 }
为传递给闭包的第一个参数隐式定义it
变量;您只需要对多个变量使用箭头语法或为第一个参数赋予不同的名称,例如
def newData = data.findAll { nbr -> nbr % 2 == 0 }