Groovy - 闭包与方法 - 区别

Ale*_*lls 11 groovy closures anonymous-inner-class

在此输入图像描述

如果仔细查看所包含的图片,您会注意到您可以使用Eclipse IDE重构Groovy代码并将方法转换为闭包,反之亦然.那么,究竟什么是闭包呢?它与方法有何不同?有人能给出一个使用闭包的好例子,以及为什么它是一个有用的功能?匿名内部课程不够好?

Sea*_*ull 12

Closure是一个Closure类实例,它实现了Call逻辑.它可以作为参数传递或分配给变量.它还有一些逻辑涉及范围变量访问和委托调用.

方法是普通的Java方法.没什么特别的.

是的,匿名内部类有很多样板代码来执行简单的操作.

相比:

button.addActionListener(
  new ActionListener() {
     public void actionPerformed( ActionEvent e ) {
          frame.dispose();
     }
  }
);
Run Code Online (Sandbox Code Playgroud)

VS

button.addActionListener { frame.dispose() }
Run Code Online (Sandbox Code Playgroud)

有关SO Groovy的一个相关问题:闭包或方法 以及包含大量有用信息的用户指南的以下链接.

  1. http://groovy-lang.org/closures.html

Groovy中的闭包是一个开放的,匿名的代码块,可以接受参数,返回值并分配给变量.闭包可以引用在其周围范围内声明的变量.与闭包的正式定义相反,Groovy语言中的Closure也可以包含在其周围范围之外定义的自由变量.在打破闭包的正式概念的同时,它提供了本章所述的各种优点.