1. Groovy简介
Groovy是运行在Java虚拟机上的敏捷语言。
2. 类和成员变量
static class FirstGroovyClass {
private String firstFile
String getFirstFile() {
return firstFile
}
void setFirstFile(def str){
firstFile = str
}
}
//创建类实例,调用方法
def first = new FirstGroovyClass()
first.setFirstFile("First")
println(first)
def second = new FirstGroovyClass()
second.firstFile = "Second"
println second
//运行的结果
setFirstFile-----
FirstGroovyClass{firstFile='First'}
setFirstFile-----
FirstGroovyClass{firstFile='Second'}
类的写法和java一致,类的setter,getter可以直接类略set,get当做属性用。setFirstFile方法省略set前缀,当做属性赋值。firstFile是私有的,不要误以为是成员变量赋值,本质是调用方法
3. 方法
static class MethodClass {
int square1(int num){
return num * num
}
def square2(def num){
num * num
}
def square3(def num){
num * num
"3"
}
def square4 = { num -> num * num }
void myPrint(def str){
println("myPrint -- " + str)
}
}
def methodTest = new MethodClass()
println methodTest.square1(3)
println methodTest.square2(4)
println methodTest.square3(5)
println methodTest.square4(6)
methodTest.myPrint "HaHa"
//运行结果
9
16
3
36
myPrint -- HaHa
square1方法写法和java一致;def 表示不用指定返回值的类型; 方法可以省略return, 省略后最后一个语句为返回值。square4方法写法是一种闭包的写法;
调用方法时,参数为字符串,可以加空格隔开省略括号
4. lists 和maps
def list = [1, 2, 3, 4]
list.each {
println "-----> $it"
}
def map = ['Android':1, 'IOS':2, 'WindowsPhone':3]
println "Android is " + map.get('Android')
println "IOS is " + map['IOS']
println "Windows Phone is " + map.WindowsPhone
map.keySet().each {
println map.get(it)
}
//运行结果
-----> 1
-----> 2
-----> 3
-----> 4
Android is 1
IOS is 2
Windows Phone is 3
1
2
3
5. 字符串GString与String
def str = 'A'
println str.class.simpleName
def b = ['Android':100]
def gStr = "B${b.Android}"
println gStr
println gStr.class.simpleName
//运行结果
String
B100
GStringImpl
当使用""定义字符串时,可以使用${obj}符号引用一个变量,这时的字符串为GString类型
当使用'字符串'定义字符串时, 不可以使用$。
6. 闭包Closure
Closure是匿名代码块,可以接受参数和返回值。它们可以被视为变量,被当做参数传递给方法。
Closure square = {
it * it
}
Closure square2 = { num ->
num * num
}
def result = square 4
println result
def result2 = square2 6
println result2
//运行结果
16
36
闭包只有一个参数时,默认有参数It
网友评论