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
- Groovy入门-语法规范
- Groovy语法入门
- Groovy的语法入门
- Groovy入门(一)—— Groovy语法
- groovy语法
- Gradle详解(一)——Groovy语法快速入门
- groovy 入门
- Groovy入门
- groovy入门
- Groovy入门
- Groovy基础语法
- Groovy的基础语法
- Groovy基本语法(1)
- Groovy基本语法(2)
- Groovy基本语法(3)
- Groovy常用语法总结
- Groovy常用语法总结
- Groovy的基础语法
- ubuntu上安装 hadoop
- BigData数据可视化软件及工具
- 使用IntelliJ IDEA 配置Maven(入门)
- 指纹锁应用解决方案
- 安卓动态申请权限
- Groovy语法入门
- leetcode_middle_53_59. Spiral Matrix II
- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
- Java基础——集合
- 430F4时钟输出引脚官方例程
- iOS 面试题(16):解释垃圾回收的原理
- socket INADDR_ANY 监听0.0.0.0地址 socket只绑定端口让路由表决定传到哪个ip
- 解决error C2440: “初始化”: 无法从“std::_List_const_iterator<_Mylist>”转换为“std::_List_iterator<_Mylist>”
- 对JS闭包的一点点理解