Groovy语法入门

来源:互联网 发布:淘宝大拉翅怎么戴 编辑:程序博客网 时间:2024/05/22 12:04

Groovy语法入门

Gradle文件其实使用Groovy脚本写的,对于Android开发者来说,入门Groovy非常简单。
主要需要了解以下几点。

调用至少包含一个参数的方法时不需要使用括号

def printAge(String name, int age) {    print("$name is $age years old")}def printEmptyLine() {    println()}def callClosure(Closure closure) {    closure()}printAge "John", 24 // Will print "John is 24 years old"printEmptyLine() // Will, well, print empty linecallClosure { println("From closure") } // Will print "From closure"  

如果方法的最后一个参数是闭包(或者说是lambda表达式),可以写在括号外

(注:这个特性很重要,gradle文件中的很多配置其实都是参数为闭包的方法)

def callWithParam(String param, Closure<String> closure) {    closure(param)}callWithParam("param", { println it }) // Will print "param"callWithParam("param") { println it } // Will print "param"callWithParam "param", { println it } // Will print "param"

对于Groovy方法中命名过的参数,会被转移到一个map中做为方法的第一个参数,那些没有命名的参数则加在参数列表之后

def printPersonInfo(Map<String, Object> person) {    println("${person.name} is ${person.age} years old")}def printJobInfo(Map<String, Object> job, String employeeName) {    println("$employeeName works as ${job.title} at ${job.company}")}printPersonInfo name: "John", age: 24printJobInfo "John", title: "Android developer", company: "Tooploox"  

这段程序会打印“John is 24 years old”和“John works as Android developer at Tooploox”,方法调用的参数可以是乱序的,map会被作为第一个参数传入!这里的方法调用也省略了括号。

闭包

闭包是一个非常重要的特性,需要解释一下。闭包可以理解为lambada。他们是一段可以被执行的代码,可以有参数列表和返回值。我们可以改变一个闭包的委托

class WriterOne {    def printText(str) {        println "Printed in One: $str"    }}class WriterTwo {    def printText(str) {        println "Printed in Two: $str"    }}def printClosure = {    printText "I come from a closure"}printClosure.delegate = new WriterOne()printClosure() // will print "Printed in One: I come from a closureprintClosure.delegate = new WriterTwo()printClosure() // will print "Printed in Two: I come from a closure  

我们可以看到printClosure调用了不同委托的printText方法,之后会解析这个特性在gradle中的重要性。

其他

详情请见http://www.jianshu.com/p/c31513f5f550

0 0