闭包(Closure)类似于 Java 语言中的匿名内部类。闭包和匿名内部类都是可执行的一段代码,不过这两者之间有一些细微的不同。状态是自动传入传出闭包的。闭包可以有名字。它们可以重复使用。而且,最重要且对 Groovy 同样成立的是,闭包远比匿名内部类要灵活得多!闭包用以下方法定义:
- {[comma-separated-Arguments-list ->] statements }
闭包用“{}”括起,“->”前面是参数,后面是处理语句。
闭包至少会有一个参数 “it”,它其实是参数表中的第一个参数,所以如果闭包定义中只有一个参数,可以省略不写,而使用缺省的参数“it”。对于没有参数定义的闭包,“it”的值就是 null 。
闭包通过 call() 方法被调用。在底层,call() 方法实现了对闭包隐含的doCall()方法的调用。
几个简单的例子:
- closure = { name ->
- println("hello ${name}")
- }closure.call("world!")
- closure = { greeting, name ->
- println(greeting + name)
- }closure("hello ", "world!")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。