Groovy是一門jvm語言,它最終是要編譯成class文件然后在jvm上執(zhí)行齿桃,所以Java語言的特性Groovy都支持洲押,我們完全可以混寫Java和Groovy。
在Groovy中沧竟,很多東西都是可以省略的铸敏,比如
- 語句后面的分號是可以省略的
- 變量的類型和方法的返回值也是可以省略的
- 方法調(diào)用時,括號也是可以省略的
- 甚至語句中的return都是可以省略的
Gradle語法操作
//def聲明變量
task stringText {
def a = 1;
def b = "hello world";
def int c = 1;
def str1 = "hellow"
def str2 = 'world'
println(str1 + str2)
}
//def聲明方法
task method {
println "methodA " + methodA(6, 4)
}
//定義方法
def methodA(int a, int b) {
//雖然沒有返回值悟泵,但這里函數(shù)在沒有return的情況下杈笔,默認(rèn)返回了最后一行的值
a + b
}
//轉(zhuǎn)大寫字符
task upper {
String someStr = "mY_naMe"
println("upper case: " + someStr.toUpperCase())
}
//打印 upper case: MY_NAME
//遍歷次數(shù)
task count {
4.times {
print(it + "")
}
println()
}
//打印 0123
//list map操作,數(shù)據(jù)結(jié)構(gòu)的使用使用java的代碼
task listMap {
List<String> list = new ArrayList<>()
list.add("data1")
list.add("data2")
list.add("data3")
println("listSize: " + list.size())
list.forEach() {
println(it)
}
Map<String, String> map = [key1: 'value1', key2: 'value2']
map.each {
println(it.key + " " + it.value)
}
}
//打印 listSize: 3
//key1 value1
//key2 value2
//閉包
def mEach(closure) {
for (int i in 1..5) {
closure(i)
}
}
def mEachWithParams(closure) {
def map = ['name':'zhangsan', 'age': '18']
map.each {
closure(it.key, it.value)
}
}
task closureTask {
mEach({
println("當(dāng)前 " + it)
})
mEachWithParams ({key, value ->
println(key + " is " + value)
})
}
//配置對象屬性
class UserInfo {
String userName
String age
}
task user {
def user = configure(new UserInfo()) {
userName = "hahaha"
age = 10
}
user.with {
userName = "hahahahaha"
age = 12
}
println user.userName + " " + user.age
}
//switch判斷,支持更多的參數(shù)類型
def object = 1
def result = ""
switch (object) {
case "foo": result = "found foo"
break
case "bar": result += "bar"
brek
case [4, 5, 6, 'inList']: result = "list"
break
case 12..30: result = "range"
break
case Integer: result = "integer"
break
case Number: result = "number"
break
case { it > 3 }: result = "number > 3"
break
default: result = "default"
}