0%

Gradle之Groovy语法

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,咱们在Android Studio中也是一直在用,学习Gradle的使用可以花式构建我们的App,甚至可以编写一些Plugin来做一些骚操作。咱们可以用Groovy语言来编写Gradle脚本,让我们先进行Groovy的语法学习。

官网api文档:http://www.groovy-lang.org/api.html

Groovy的语法与java还是有很多相似之处的,但是它比java更加的灵活。

练习Groovy语法可在Android Studio的Tools–Groovy Console中进行。

1
2
3
4
5
6
7
8
9
10
11
//变量申明

int num = 1
String name = "vice"
float money = 66.6f
boolean show = false
//相较于java新增的def声明方式
def xx = 6

//变量赋值
num = 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//数组

String[] list = ['aa', 'bb', 'cc']
def list = ['aa', 'bb', 'cc']

//添加元素
list.add('dd')
//获取元素
def a = list[1]
//集合大小
println list.size()
//遍历集合
list.each {
println(it)
}
1
2
3
4
5
//List

def names = ['key1':11,"key2":22]
//获取对象key的value值
def name = names['key1']
1
2
3
4
5
6
7
8
9
//Range

//Range类型的变量 由begin值+两个点+end值表示左边这个aRange包含1,2,3,4,5这5个值
def aRange = 1..5
//如果不想包含最后一个元素,则
//包含1,2,3,4这4个元素
def aRangeWithoutEnd = 1..<5
println aRange.from
println aRange.to
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//字符串

1.单引号''中的内容严格对应Java中的String,不对$符号进行转义
def singleQuote='I am $ dolloar' //输出就是I am $ dolloar
2.双引号""的内容则和脚本语言的处理有点像,如果字符中有$号的话,则它会$表达式先求值。
def doubleQuoteWithoutDollar = "I am one dollar" //输出 I am one dollar
def x = 1
def doubleQuoteWithDollar = "I am $x dolloar" //输出I am 1 dolloar
3.三个引号'''xxx'''中的字符串支持随意换行 比如
defmultieLines = ''' begin
line 1
line 2
end '''
除了每行代码不用加分号外,Groovy中函数调用的时候还可以不加括号。比如:
println ("test") ---> println "test"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//对象

class Person {
String name
int age

def haha() {
println('haha')
}
}

def aa = new Person()
aa.name = "sss"

println(aa.name)
aa.haha()
1
2
3
4
5
6
7
8
9
10
11
12
//函数

//无需指定参数类型
String testFunction(arg1,arg2){
...
return "xxx"
}
//也可不指定返回值类型,此时需要使用def
def testFunction(arg1,arg2){
...
//函数默认返回值为方法最后一行代码
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//闭包

//闭包格式
{ 参数1 = 默认值 , 参数2 ->
代码...
}

//定义闭包c
def c = {
a, b = 1 -> println a + b
}
//定义一个方法,传参是一个闭包类型Closure
def func(Closure closure) {
closure(2)
}
//调用方法func,传入闭包c
func c

//结果为:3