Gradle Groovy 腳本語言基礎版
task hello{
doLast{
println'hello world!'
}
}
task printStringTask <<{
def str1 = "雙引號"
def str2 = '單引號'
println"單引號定義的字符串類型:"+str2.getClass().name
println"雙引號定義的字符串類型:"+str1.getClass().name
}
task printStringVar <<{
def name="張三"
def old = "11"
println'單引號的變量計算:$name'//一個變量的時候可以省略花括號
println"雙引號的變量計算:$name${old}"
}
task printList <<{
def numList = [1,3,43,22]
println numList.getClass().name
println numList[0]//訪問第一個元素
println numList[-1]//訪問最後一個元素
println numList[-2]//訪問倒數第二個元素
println numList[2..3]//訪問第三個到第四個元素
println numList[-1..1]//訪問從最後一個到第二個元素
//1
//22
//43
//[43, 22]
//[22, 43, 3]
numList.each{
println it //正在迭代的元素
}
}
task printlnMap <<{
def map1 = ['width':1024, 'height':2048]
println map1.getClass().name
println map1.height
println map1['width']
map1.each{
println "key: ${it.key} value: ${it.value}"
}
}
task invokeMethod <<{
sum(1,2)
sum 1,2
}
def sum(int a, int b){
println a+b
}
task printlnMethodReturn{
def add1 = maxNum 1,2
def add2 = maxNum 5,3
println "add1: $add1 add2: $add2"
}
def maxNum(int a, int b){
if(a > b){
a
}else {
b
}
}
task printlnJavaBean {
Personal person = new Personal()
println person.name
person.name = "張山"
println person.name
println person.age //可以用getXXX最爲屬性
}
class Personal{
String name
int getAge(){
11
}
}
task helloClosure{
/*customEach {
println it
}*/
eachMap {k,v ->
println "key: ${k} value: $v"
}
}
def eachMap(closure){
def map1 = ['姓名':"張山",'年齡':"12"]
map1.each {
closure(it.key,it.value)
}
}
def customEach(closure){
for(int i in 1..10){
closure(i)
}
}
task helloDelegate << {
new Delegate().test{
println "thisObject:${thisObject.getClass()}"
println "owner:${owner.getClass()}"
println "delegate:${delegate.getClass()}"
method1()
it.method1()
}
}
def method1(){
println "Delegate this: ${this.getClass()} in Delegate"
println "method in Delegate"
}
class Delegate{
def method1(){
println "Delegate this: ${this.getClass()} in Delegate"
println "method in Delegate"
}
def test(Closure<Delegate> closure){
closure(this)
}
}
task configClosure <<{
person{
personName = "張三"
personAge = 11
dumpPerson()
}
}
class Person{
String personName
int personAge
def dumpPerson(){
println "name: $personName age: $personAge"
}
}
def person(Closure<Person> closure){
Person person = new Person()
closure.delegate = person
closure.setResolveStrategy(Closure.DELEGATE_FIRST)
closure(person)
}