圖片.png
(1)括號是可以省略的
代碼一:
println(a + b)
println a + b;
代碼二:
public static void main(String[] args){
addOpration(1, 2) //一般情況下尔邓,方法是有括號的
addOpration 1, 2 //Groovy語言的方法可以不要括號
}
/**
* 加法運(yùn)算
* @param a
* @param b
*/
private static void addOpration(def a, def b){
println a + b;
}
代碼一
和代碼二
中方法的括號可以省略也可以保留锉矢。
(2)形式參數(shù)的類型聲明是可以省略的
/**
* 加法運(yùn)算
* @param a
* @param b
*/
private static def addOpration(a, b){
a + b
}
addOpration中的形式參數(shù)的類型聲明已被省略。
(3)return是可以不寫的
public static void main(String[] args){
println addOpration(1, 2)
}
/**
* 加法運(yùn)算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
return a + b
}
個人是C沽损、C++、Java語言出生缠俺,為了代碼的可讀性,還是建議不要省略return壹士。
在Groovy語言中磷雇,return是可以省略的躏救,代碼如下:
/**
* 加法運(yùn)算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
def c = a + b
}
或者可以寫的更加簡潔
/**
* 加法運(yùn)算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
a + b
}
Groovy語言中,如果方法中不寫return盒使,會將方法執(zhí)行過程中的最后一句話作為其返回值
。
(4)代碼塊是可以作為參數(shù)傳遞的
代碼塊
少办,即用{}
括起來的代碼苞慢,其實就是閉包
英妓。
在上一章中,講到了List集合和Map集合蔓纠,它們的遍歷是都使用到了each()
方法辑畦,如下:
map.each ({
println it.key+":"+it.value
})
來看一下這個方法的源碼:
public static <K, V> Map<K, V> each(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure closure) {
Iterator var2 = self.entrySet().iterator();
while(var2.hasNext()) {
Entry entry = (Entry)var2.next();
callClosureForMapEntry(closure, entry);
}
return self;
}
self不用管纯出,在Groovy中基本沒有內(nèi)置方法都會含有一個self對象,不做為參數(shù)的傳遞。
除了self之外箩言,還有一個參數(shù)是Closure closure
,這個Closure
在Groovy中就是閉包
的意思焕襟,閉包
是一個代碼塊,所以胧洒,如果方法中的形式參數(shù)是Closure
墨状,那么這個參數(shù)就是一個閉包
。
map.each ({
println it.key+":"+it.value
})
代碼中{}
就是閉包
肾砂。
由于列赎,Groovy語言中方法是可以省略括號的镐确,所以最終代碼是:
map.each {
println it.key+":"+it.value
}
[本章完...]