groovy ..将闭包作为参数传递给另一个闭包

use*_*455 1 parameters groovy closures

举个例子..

def data = [1,2,3,4,5,6,7]

def someFilter = {it-> it % 2 == 0}

def newData = data.findAll{it,someFilter ->
   someFilter(it)
}

newData
Run Code Online (Sandbox Code Playgroud)

给我一个错误..

当前作用域已包含名称someFilter的变量:5行,列:27

是否有可能将一个闭包(可能是一个非常的)传递给另一个闭包?

谢谢

bdk*_*her 6

你可以传递闭包.我相信这就是你的意图:

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]
Run Code Online (Sandbox Code Playgroud)

匿名通过关闭,

def newData = data.findAll { it % 2 == 0 }
Run Code Online (Sandbox Code Playgroud)

it变量被隐式地传递给封闭件的第一个参数定义; 您只需要对多个变量使用箭头语法或为第一个参数赋予不同的名称,例如

def newData = data.findAll { nbr -> nbr % 2 == 0 }
Run Code Online (Sandbox Code Playgroud)