Gradle系列1--Groovy

2018-11-20  本文已影响0人  cntlb

Gradle是目前最流行的Java构建工具,基于Groovy开发,因此使用Gradle前必须对groovy有一定的了解。记录groovy使用中的一些重要概念, 后续继续补充。

详细文档参考http://www.groovy-lang.org/single-page-documentation.html,至少看完Groovy Language Specification这部分。 这是一份官方的权威文档,案例与解析的方式并用,可以快速掌握Groovy基本语法和使用方法。需要的只是Java基础、克服中文文档的依赖(可以配合强大的翻译插件,软件...)和阅读文档的耐心。

闭包(Closure)

Groovy中的闭包是一个公开、匿名的代码块,可以接收参数,将返回值赋值给变量。闭包可以引用在其周围范围内声明的变量。查看1.5. Closures以确保能理解和使用闭包.

代理/委托策略(Delegation strategy)

Groovy定义作为Closure实例的闭包(closure)与Java 8中的 lambda 表达式有很大的不同. 代理是一个 lambda 中没有等价物的一个关键概念. 可修改闭包的代理和代理策略使得在Groovy中设计优美的DSL成为可能.

Owner, delegate和this

为了理解代理的概念, 我们必须先解释闭包中的this. 一个闭包定义了3个不同的事物:

请参看http://docs.groovy-lang.org/latest/html/documentation/#closure-owner中的代码示例

补充:

thisowner: 大部分情况下是同一个对象, 定义在闭包中的闭包其owner为外层闭包对象, 而此时this指外层闭包所在的类对象.

ownerdelegate: 默认情况下闭包的delegate就是owner, 但可以通过Closure.delegate来修改默认行为

代理策略

闭包中定义了若干代理策略供选择

Differences with Java

参看Differences with Java部分

Operator overloading

所有支持重载的操作符及对应方法见: http://docs.groovy-lang.org/latest/html/documentation/#Operator-Overloading

Traits

http://docs.groovy-lang.org/latest/html/documentation/#_traits

上一篇 下一篇

猜你喜欢

热点阅读