目录
使用Gradle需要了解的Groovy语法:
基础
- 语句末尾不需要写分号
- 支持使用def定义动态数据类型变量
- 没有基本类型,全部使用包装类型
- 方法变化
- 使用def定义方法,可以不指定返回类型、参数类型,直接返回最后一行
- 方法调用可以不写(),不过建议加上
- 不管有没有返回值,Groovy中返回的都是Object类型
- 字符串:支持单引号、双引号、三引号,双引号的可以解析插值,三引号可以带格式输出
- 不用写getter/setter,会自动创建,调用时
a.xxx
,a.setXxx(xx)
- Class类型可以省略
.class
==
就是表示equals
,x.is(x)
判断是不是同一个引用- 支持
**
运算符,表示多少次方 - switch变化:
def num = 5.21
switch (num) {
case [5.21, 4, "list"]:
return "ok"
break
default:
break
}
- Groovy 支持三种集合类型:
List --> 链表,对应 Java 中的 List 接口,一般用 ArrayList 作为真正的实现类
Map --> 哈希表,对应 Java 中的 LinkedHashMap
Range --> 范围,它其实是 List 的一种拓展
// --> list
def data = [666,123,"AA"]
data[0] = "BB"
data[100] = 33
println("size --> " + data.size()) // 101个元素
----------------------我是分割线------------------------
// --> map
def key = "888"
def data = ["key1": "value", "key2": 111, (key): 888] // 使用 () key 使用动态值
data.key1
data.["key1"]
data.key2 = "new"
def name2 = "name"
def age2 = 578
data.put(name2, age2)
println("size --> " + data.size()) // 4
println("map --> " + data) // [key1:value, key2:new, 888:888, name:578]
println("key--> " + data.get(key)) // key--> 888
----------------------我是分割线------------------------
// --> range
def data = 1..10
data.getFrom()
data.to()
println("size --> " + data.size())
println("range --> " + data) // range --> 1..10
闭包
Groovy中的闭包是一个开放,匿名的代码块,可以接受参数,返回值并分配给变量
// 标准写法,method1 就是一个闭包 (>▽<)
def method1 = { name,age ->
name + age
}
// 调用方式
method1.call(123,888)
method1(123,888)
// 默认有一个 it 表示单个参数
def method3 = { "Hello World!$it" }
// 强制不带参数
def method2 = { ->
name + age
}
// 作为方法参数使用
def to(x, y,Closure closure) {
x + y + closure(111)
}
闭包委托
闭包代码需要转换为.class代码执行,因此需要传递的参数就会赋值给delegate
属性:
class Person {
String name
int age
}
def cc = {
name = "hanmeimei"
age = 26
}
Person person = new Person()
cc.call(person)
其中,cc是闭包,cc.call(person)是调用闭包,换个写法:
cc.delegate = person
cc.call()
可以直接使用的对象
println(rootProject.projectDir.path/absolutePath)
println(rootProject.rootDir.path)
println(rootProject.buildDir.path)
def file = project.file(fileName) //在当前项目下生成文件
其他groovy api
https://groovy-lang.org/groovy-dev-kit.html
标签:Groovy,闭包,--,888,Gradle,println,data,def From: https://www.cnblogs.com/bingmous/p/18151093