1. Groovy簡介
Groovy是運行在Java虛擬機上的敏捷語言灌诅。
2. 類和成員變量
static class FirstGroovyClass {
private String firstFile
String getFirstFile() {
return firstFile
}
void setFirstFile(def str){
firstFile = str
}
}
//創(chuàng)建類實例,調(diào)用方法
def first = new FirstGroovyClass()
first.setFirstFile("First")
println(first)
def second = new FirstGroovyClass()
second.firstFile = "Second"
println second
//運行的結(jié)果
setFirstFile-----
FirstGroovyClass{firstFile='First'}
setFirstFile-----
FirstGroovyClass{firstFile='Second'}
類的寫法和java一致脱茉,類的setter,getter可以直接類略set,get當(dāng)做屬性用非驮。setFirstFile方法省略set前綴胸懈,當(dāng)做屬性賦值担扑。firstFile是私有的,不要誤以為是成員變量賦值趣钱,本質(zhì)是調(diào)用方法
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"
//運行結(jié)果
9
16
3
36
myPrint -- HaHa
square1方法寫法和java一致涌献;def 表示不用指定返回值的類型; 方法可以省略return, 省略后最后一個語句為返回值。square4方法寫法是一種閉包的寫法首有;
調(diào)用方法時燕垃,參數(shù)為字符串,可以加空格隔開省略括號
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)
}
//運行結(jié)果
-----> 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
//運行結(jié)果
String
B100
GStringImpl
當(dāng)使用""定義字符串時井联,可以使用${obj}符號引用一個變量卜壕,這時的字符串為GString類型
當(dāng)使用'字符串'定義字符串時, 不可以使用$。
6. 閉包Closure
Closure是匿名代碼塊烙常,可以接受參數(shù)和返回值轴捎。它們可以被視為變量,被當(dāng)做參數(shù)傳遞給方法蚕脏。
Closure square = {
it * it
}
Closure square2 = { num ->
num * num
}
def result = square 4
println result
def result2 = square2 6
println result2
//運行結(jié)果
16
36
閉包只有一個參數(shù)時侦副,默認(rèn)有參數(shù)It