Closure

在groovy官方文档中,闭包定义为开放的,匿名的而且有输入输出(可以输入参数并且返回值)的代码块

  • 闭包是一段带上下文的函数-保存在某个地方
  • 闭包可以赋值给变量,在有需要的时候执行
  • 我们使用groovy定义的任何闭包,groovy都会替其生成一个groovy.lang.Closure的子类
  • 在运行时,一般的代码是会被即时执行的,但是闭包只有在被调用的时候才会被执行

闭包调用

  • 直接调用
  1. public void run(Closure closure) {
  2. closure()
  3. }
  • 通过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.