Groovy<第七篇>:基础语法(6)---方法

2020-05-10  本文已影响0人  NoBugException
图片.png
(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
}

[本章完...]

上一篇下一篇

猜你喜欢

热点阅读