def foo(n) {
return {n += it}
}
答案 0 :(得分:17)
代码定义了一个返回闭包的函数/方法foo
。出于理解此代码的目的,您可以将闭包视为没有名称且未附加到任何对象的方法。
可以通过传递一个参数来调用闭包。闭包返回的值为n += it
,其中it
是用于引用闭包参数的默认名称。如果您希望闭包的参数具有不同的名称,例如closureParam
你需要明确地定义它:
def foo(n) {
return {closureParam -> n += closureParam}
}
->
将闭包的参数列表与闭包体分开。如果未定义参数列表,则默认值为名为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)
答案 1 :(得分:-2)
我相信它会返回你传入的值的两倍,或者如果给它一个字符串,则返回两次相同字符串的连接。