(1)括号是可以省略的
代码一:
println(a + b)
println a + b;
代码二:
public static void main(String[] args){
addOpration(1, 2) //一般情况下,方法是有括号的
addOpration 1, 2 //Groovy语言的方法可以不要括号
}
/**
* 加法运算
* @param a
* @param b
*/
private static void addOpration(def a, def b){
println a + b;
}
代码一
和代码二
中方法的括号可以省略也可以保留。
(2)形式参数的类型声明是可以省略的
/**
* 加法运算
* @param a
* @param b
*/
private static def addOpration(a, b){
a + b
}
addOpration中的形式参数的类型声明已被省略。
(3)return是可以不写的
public static void main(String[] args){
println addOpration(1, 2)
}
/**
* 加法运算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
return a + b
}
个人是C、C++、Java语言出生,为了代码的可读性,还是建议不要省略return。
在Groovy语言中,return是可以省略的,代码如下:
/**
* 加法运算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
def c = a + b
}
或者可以写的更加简洁
/**
* 加法运算
* @param a
* @param b
*/
private static def addOpration(def a, def b){
a + b
}
Groovy语言中,如果方法中不写return,会将方法执行过程中的最后一句话作为其返回值
。
(4)代码块是可以作为参数传递的
代码块
,即用{}
括起来的代码,其实就是闭包
。
在上一章中,讲到了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中基本没有内置方法都会含有一个self对象,不做为参数的传递。
除了self之外,还有一个参数是Closure closure
,这个Closure
在Groovy中就是闭包
的意思,闭包
是一个代码块,所以,如果方法中的形式参数是Closure
,那么这个参数就是一个闭包
。
map.each ({
println it.key+":"+it.value
})
代码中{}
就是闭包
。
由于,Groovy语言中方法是可以省略括号的,所以最终代码是:
map.each {
println it.key+":"+it.value
}
[本章完...]
网友评论