Gradle 构建工具
- 作用:定义和集成软件交付流程各个部分的一站式商店
- 使用 wrapper ,保证每一个使用项目的人都使用同一个版本
- 闭包 一种特殊的函数
- 以逗号隔开的参数列表放在箭头的左侧
基础语法
task groovy {}
// 函数和变量的声明及调用
def foo = "One million dollars"
def myClosure = {
println "Hello from a closure"
println "The value of foo is $foo"
}
myClosure()
//变量的复制
def bar = myClosure
def baz = bar
baz()
/*
函数的嵌套
*/
def doubleIt = { x -> x + x}
def applyTwice(func, arg){
func(func(arg))
}
foo = 5
def fooDoubledTwice = applyTwice(doubleIt, foo)
println "Applying doubleIt twice to $foo equals $fooDoubledTwice"
/*
列表的使用
*/
def myList = ["Gradle", "Groovy", "Android"]
def printItem = {item -> println "List item: $item"}
myList.each(printItem)
myList.each{println "Compactly printing each list item: $it"}
/*
对类而言自动设置 set 和 get 方法
*/
class GroovyGreeter {
String greeting = "Default greeting"
def printGreeting(){println "Greeting: $greeting"}
}
def myGroovyGreeter = new GroovyGreeter()
myGroovyGreeter.printGreeting()
myGroovyGreeter.greeting = "My custom greeting"
myGroovyGreeter.printGreeting()
/*
使用 delegate 委推,拥有被委推对象的所有属性和方法
*/
def greetingClosure = {
printGreeting()
printGreeting()
String greeting = "Setting the greeting from a closure"
println greeting
}
// greetingClosure() // This doesn't work, because `greeting` isn't defined
greetingClosure.delegate = myGroovyGreeter
greetingClosure() // This works as `greeting` is a property of the delegate