Groovy基礎

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)
}


發佈了105 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章