美文网首页
Groovy<第七篇>:基础语法(6)---方法

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

作者: NoBugException | 来源:发表于2020-05-10 10:16 被阅读0次
    图片.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
    }
    

    [本章完...]

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/afolnhtx.html