【Gradle系列】Groovy基礎編程知識1

引言

上一節,咱們瞭解了「變量的定義」 本章咱們將學習系列的基礎編程知識,如:字符串/數組/集合等java

String 3種經常使用的定義

(1)單引號定義字符串編程

def name = '單引號定義字符串'
複製代碼

這種定義是沒有格式的,須要換行等只能經過加號進行拼接json

(2)2個單引號定義數組

def nam2 = "2個單引號定義字符串"//普通定義
def helloExt = "hello : ${nam2}"//包含變量
def sum = "the sum is : ${3 + 2}"//包含表達式
複製代碼

這種定義方式是可拓展,可包含變量/表達式等,相對是比較經常使用的一種markdown

(3)3個單引號定義閉包

def name1 = ''' 3個單引號定義字符串 第一行 第二行 第三行 { name:Davi age:boy } '''
複製代碼

這種定義方式可讀性比較強,能夠指定格式,如:json等函數

String 體驗相關API

先定義下:post

def str = "string1"
def str2 = "string2"
複製代碼

字符串的擴充之,中心填充:學習

str.center(5, 'xx')
複製代碼

左填充:this

str.padLeft(5, 'aa')
複製代碼

索引:

println str[0]//訪問單個元素
println str[0..1]//訪問0-1的元素
複製代碼

閉包

###閉包的定義和調用 閉包,就是可以讀取其餘函數內部變量的函數 先來看看不帶參數的定義和調用:

def closure1 = {
   println 'hello closure!'
}
closure1.call()
複製代碼

帶參數的定義和調用:

def closure2 = {
  String name, int age -> println "hello ${name}"
}
closure2('closure???', 9)
複製代碼

it 默認的參數的使用:

def closure3 = {
    println "hello ${it}"
}
closure3.call("it 默認的參數...")
複製代碼

帶返回值的定義和調用:

def closure4 = {
   return '閉包返回值'
}
println closure4.call()
複製代碼

閉包結合基本數據類型等的使用

和int的結合使用,求n的階乘,不須要for循環,簡潔的代碼:

int fab(int num) {
    int result = 1
    //1循環到num
    1.upto(num, { n -> result *= n })
    return result
}
複製代碼

string類型結合閉包,遍歷字符

void strFab() {
        def str = '2 and 3 is 5'
        str.each {
            String s -> println a
        }
 }
複製代碼

閉包重要的3個變量

3個重要的變量:this,owner,delegate

this:表明閉包定義處的類

owner:閉包定義處的類/對象

delegate:任意對象,默認和'owner'一致

大部分狀況下,三個關鍵字一致;

若是閉包中嵌套了閉包,那麼'this'指向的是最外層的,'owner' 'delegate' 指向的是最近那一層的

void demo() {
        //3個重要的變量
        def closure = {
            //閉包定義處的類,好比:PluginImpl.groovy
            println "closure this :" + this

            //閉包定義處的類/對象
            println "closure owner :" + owner

            //任意對象,默認和'owner'一致
            println "closure delegate :" + delegate
			
            def inner = {
                println "inner this :" + this
                println "inner owner :" + owner
                println "inner delegate :" + delegate
            }
        }
        closure.call()
}
複製代碼

結尾

哈哈,該篇就寫到這裏(一塊兒體系化學習,一塊兒成長)

相關文章
相關標籤/搜索