Dón*_*nal 17

该代码定义了一个foo返回闭包的函数/方法.出于理解此代码的目的,您可以将闭包视为没有名称且未附加到任何对象的方法.

可以通过传递一个参数来调用闭包.经闭返回的值将是n += it这里it是用来指一个封闭的参数的默认名称.如果您希望闭包的参数具有不同的名称,例如,closureParam您需要明确定义它:

def foo(n) {
    return {closureParam -> n += closureParam}
}
Run Code Online (Sandbox Code Playgroud)

->闭包的参数列表与闭包体分开.如果未定义参数列表,则默认值为名为的单个参数it.也许调用闭包的例子会有所帮助:

Closure closure = foo(2)
def closureReturnVal = closure.call(4) 
assert closureReturnVal == 6 // because 4 + 2 == 6

// you can omit .call when calling a closure, so the following also works
closure = foo(3)
assert 8 == closure(5) 
Run Code Online (Sandbox Code Playgroud)