Gradle昇仙路之Groovy(1)

構建工具發展史:Ant -- > Maven --> Gradlejava

Gradle 由Groovy語言編寫,所以基於Groovy環境運行。編程

 

一、Grovvy簡介

1.1 場景

Groovy也是另一種爲DSL語言domain specific language,腳本編程語言,matlab是DSL語言的一種,專門用來計算的,還有UML建模語言,在建模方向上有專供。因此DSL語言只用於某一特定領域,也被稱爲領域語言。api

1.2 理解

基於JVM開發的語言,因此可以使用java的庫,與java完美結合閉包

1.3 安裝Groovy環境

點擊這裏--》mac中搭建groovy環境dom

點擊這裏--》IDEA中建立Groovy簡單工程編程語言

1.4 自我理解

和java很像,能夠建立類同於java的一個類,以下:工具

因此groovy的工程和java很類似,可是看上面的截圖你們會發現,"public"還有這個";"都是灰色的,表示無關緊要,這就是groovy的某一個與java區別的地方,一樣咱們也能夠把String[] 參數類型省略,那麼咱們省略以後也能輸出一樣的表達結果:this

還有一點就是,它與lua語言也有點相似,那就是能夠做爲腳本語言,那麼做爲腳本語言咱們也能夠不須要class的聲明,以下:lua

一樣的結果,因此咱們對這個簡單的瞭解以後咱們進入基礎語法的講解,畢竟groovy雖然與java差很少,但仍是有些不一樣的地方。spa

1.5 groovy基礎語法

1.5.1 變量的類型

對象類型(沒有int double類型,都會轉換成Integer,Double)

1.5.2 變量的定義

1.5.1 強類型、弱類型

強類型定義就是相似與java的形式,String name ="mujiutian",而弱類型定義的話,咱們相似於java10的var類型,有系統本身轉換爲本身認爲的數據類型,以下

1.5.2 GString可擴展表達式

由上咱們能夠看到數據類型就是GString,這個就是可擴展的類型,而後咱們能夠用'' 表示,一樣能夠用""表示。

1.5.3 字符串普一般見方法

def name = "mujiutian"

def name1 = "osc"

def name2 = 'oscChina'

//name中間。兩邊字符串爲M,達到11長度
println name.center(11,"M")
//在左邊添加2的字符串,達到9的長度
println name1.padLeft(9,"2")
//比較兩個字符串大小
println name.compareTo(name1)
//比較兩個字符串大小,和compareTo同樣
println name > name1
//獲取第一個字符
println name[0]
//獲取0-3的字符
println name[0..3]
//兩個字符串相減,前者必須包含後者
println name2.minus(name1)
//和上面同樣
println name2 - name1
//反過來
println name2.reverse()

println name2.capitalize()

結果爲:

MmujiutianM
222222osc
-2
false
m
muji
China
China
anihCcso
OscChina

 1.5.4 switch語句

def var = 1.5

def result

switch (var){
    case "soo":
        result = "this is soo"
        break
    case Integer:
        result = "this is int type"
        break
    case [5,6,7,'in']:
        result = "hah"
        break
    case 10..90:
        result ='dsk'
        break
    case BigDecimal:
        result ='this is bigdecimal'
        break
    default:
        break
}

println result

結果爲:

this is bigdecimal

1.5.5 for循環

//直接循環
def sum1 = 0

for (i in 0..9){
    sum1 +=i
}

//list循環
def sum2 =0
for (i in [1,2,3,4,5,6,7]){
    sum2 +=i
}

//map循環
def sum3 =0
for (i in ['key1':1,'key2':2,'key3':3]){
    sum +=i.value
}

1.6 groovy閉包,相似於java的lambda表達式

1.6.1 閉包概念:一個代碼塊

1.6.2 閉包參數:一個或者多個

1.6.3 閉包返回值:把println 換成return 

def clouser = {String name -> return "hello ${name} " }


def result = clouser.call('groovy')

println(result)

閉包的用法相似與java8中的lambda表達式,以下:

int fab(int num){
    int result = 1
    //從1增長到num,downto(1,..)是降低到1
    1.upto(num,{num1 -> result *= num1})
    return result
}

int cal(int num){
    int result =0
    //起始值0
    num.times {
        num1 -> result*=num1
    }
}

1.6.4閉包關鍵變量

this、owner、delegate

相關文章
相關標籤/搜索