G&GR翻译之旅——从Java到Groovy(5.0&5.1-闭包)
?
第5章??闭包(Closure)您已经在前面章节中见过一些闭包的例子。对Java程序员来说,闭包是一个相对较新的概念,尤其是第一次看到它会觉得很陌生。通过本章的实例,您一定会对闭包有个较好的理解,如他们工作原理,以及如何有效使用。闭包是Groovy中的重要概念,现实中几乎所有的例子都会用到闭包。因此,如果您想更好理解Groovy语言,掌握闭包是极其重要的。
?
5.1.????什么是闭包?简单地说,闭包是一个匿名的代码块。最重要的,闭包是groovy.lang.Closure的对象:可赋值给变量,并作为方法的参数传递。闭包可引用其他变量,甚至可作为方法,接收任何类型的参数和返回值(当然也包括闭包本身)。
只有闭包被调用时,它才会被执行,而不是在定义时。闭包与方法的不同之处,主要表现在以下几个方面:
闭包类似于Java匿名的内部类,但无需过多限制(将在5.3节详细讲述):闭包可重用,也访问范围内的任何变量,而且语法简洁。
闭包来源于正式的定义,一个函数(或代码块)变成封闭的。当方法体内的自变量。否则,代码块部分封闭。然而,Groovy并不区分这两种闭包,即使闭包中包含的未绑定的变量,我们也被称为闭包(Closure)。