Groovy流水賬-Groovy基礎

Groovy針對循環處理提供了多種靈活方式,比起java來更簡潔,充分體現了動態語言的靈活性。
1)針對int類型的循環使用upto來循環,代碼如下:

1.upto(9) { println "$it" }


2)如果你的循環從0開始,可以使用times。代碼如下:

5.times{ print "$it "}


3)當然還有必不可少的for,while循環等等。代碼如下:

for(i =0; i< 3 ; i++){
print "$i "
}


Groovy的優雅的異常處理方式,就是無需特別地去處理異常。異常回自動拋到更高級別的類調用者去處理,而不必象java那樣必須catch後再拋出或者通過在方法聲明上使用throws。

Groovy還提供了很多其他簡單的特性
1)return語句是可選的,如果方法的最後一個語句是判斷語句,則除外
2)分號幾乎是可選的,主要在特定的語意下必須寫分號外,大部分情況都不必寫分號
3)方法和類默認都是public的
4)?. 用來判斷如果一個對象不爲空,則調用方法,例如:

def obj = null
print obj.getClass()

5)使用named parameters來初始化java bean,大部分的動態語言都提供此特性。

Groovy中定義JavaBean,代碼摘自Programming Groovy

class Robot
{
def type, height, width
def access(location, weight, fragile)
{
println "Received fragile? $fragile, weight: $weight, loc: $location"
}
}
robot = new Robot(type: 'arm' , width: 10, height: 40)
println "$robot.type, $robot.height, $robot.width"
robot.access(50, x: 30, y: 20, z: 10, true)

可以使用named parameter來初始化java bean。這段代碼的輸入如下:

arm, 40, 10
Received fragile? true, weight: 50, loc: ["x" :30, "y" :20, "z" :10]

對於第二段代碼可以比較奇怪,方法調用傳遞的參數超出了方法聲明中的參數個數,groovy會自動將key-value的參數集合起來作爲方法的第一個參數,其他的按方法聲明的順序來進行賦值。

Groovy支持方法的可選的參數傳遞,代碼如下:

def printGreetings(name, greetings = "Welcome"){
print "$name, Welcome."
}
printGreetings("Durex")

如果在一個方法最後一個參數定義數組形式,則該參數也是可選的,可傳可不傳。

Groovy中的boolean運算爲ture的情況:
1)true
2)集合不爲空
3)char不爲0
4)CharSequence的長度大於0
5)Enumeration有更多的元素
6)Iterator迭代器的hasNext
7)Number不是0
8)Map不爲空
9)Matcher至少有一個匹配
10)Object數組的長度大於0
11)任何其他的對象引用不爲null

Goovy的強大的操作符重載,1)可以對字母進行循環,代碼如下

for( i = 'a'; i < 'z'; i++){
print "$i"
}

2)針對數組,進行<<將操作數移入數組中,代碼如下:

def greetings = ["hello"]
greetings << "welcome"


Groovy針對java5提供了很多特性支持:自動裝箱,for-each,enum,可變參數,靜態導入,範型等等。Groovy同時還提供了自己的特別地方:==和java的equals一樣,新的關鍵字(def,it,以及Range定義..),沒有code block,更簡單定義數組的方式(def array =[1,2])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章