Closure
在groovy官方文档中,闭包定义为开放的,匿名的而且有输入输出(可以输入参数并且返回值)的代码块
- 闭包是一段带上下文的函数-保存在某个地方
- 闭包可以赋值给变量,在有需要的时候执行
- 我们使用groovy定义的任何闭包,groovy都会替其生成一个groovy.lang.Closure的子类
- 在运行时,一般的代码是会被即时执行的,但是闭包只有在被调用的时候才会被执行
闭包调用
- 直接调用
public void run(Closure closure) {
closure()
}
- 通过call() 方法调用, 可以接受任意个参数作为入参
public void run(Closure closure) {
closure.call()
}
// actually there is a doCall(), 这里略过
Curried parameters
- curry named after , Haskell Curry
Closure memoization
Memoization allows the return values for closure invocations to be cached.
网友评论