在下面的代码函数中返回变量a的值,怎么可能,请解释一下

时间:2015-02-03 08:37:20

标签: groovy

在下面的代码函数中,myprint返回变量a的值,怎么可能,请解释

class Test {  
    def myprint(){        
        def a = "my"  
        }   
        }
        def test1 = new Test()
        log.info test1.myprint()

1 个答案:

答案 0 :(得分:1)

你遇到没有return语句的groovy方法。

实际上,如Groovy Goodness中所述,作为一个例子,return语句不是强制结束Groovy方法的:最后执行的指令的结果用作方法返回值。

因此,写作

def myMethod() {
    def a = "value"
}
println myMethod()

将输出

value

因为Groovy解释器会将def a = "value"视为方法返回值的最后一条指令。

但是,出于清晰的原因,与groovy委员会相反,我建议您使用该功能,因为它会使代码的可读性降低。

加分点:这个功能在闭包时非常适用:当调用[1,2,3].collect { it*2}时会返回[2, 4, 6],这非常好。