2016-05-18 1 views
1

В качестве примера ..заводной .. проходя затворы в качестве параметра другого закрытия

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

Можно ли закрыть закрытие (возможно, анономно) в другое закрытие?

Thanks

ответ

4

Вы можете пройти закрытие. Я считаю, что это то, что вы намеревались:

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 } 
+0

Ах .. конечно .. Большое спасибо – user3914455

Смежные вопросы