簡體   English   中英

groovy ..將閉包作為參數傳遞給另一個閉包

[英]groovy .. passing closures as parameter to another closure

舉個例子..

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

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

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

newData

給我一個錯誤..

當前作用域已經在第5行,第27列包含名稱為someFilter的變量。

是否可以將一個閉包(也許是匿名地)傳遞給另一個閉包?

謝謝

您可以傳遞閉包。 我相信這就是您想要的:

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 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM