简单的声明方式,闭包作为参数传递给方法
def log = '' (1..3).each{element -> log += element} assert log == '123' log = '' (1..3).each{log += it} assert log == '123'
花括号可以用来构建一个闭包对象或者是groovy代码块
//赋值给变量 def test = {line -> println line} //作为方法的返回值 def Closure getTest() { return {element -> println element} }
闭包对象赋值给变量,然后被方法调用
def map = ['a': 1, 'b': 2] def doub = {key, value -> map[key] = value*2} map.each(doub) assert map == ['a': 2, 'b': 4]
引用方法作为闭包
def map = ['a': 1, 'b': 2] def closureTest(entry) { map[entry.key] = entry.value * 2 } def closure = this.&closureTest map.each(closure) assert map == ['a':2, 'b':4]