groovy学习之闭包声明

简单的声明方式,闭包作为参数传递给方法

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]

猜你喜欢

转载自rainy646556896.iteye.com/blog/2229782