2016-05-18 40 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,column:27

是否有可能將閉包(可能是獨立的)傳遞給另一個閉包?

謝謝

回答

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

相關問題