在下面的代码函数中,myprint返回变量a的值,怎么可能,请解释
class Test {
def myprint(){
def a = "my"
}
}
def test1 = new Test()
log.info test1.myprint()
答案 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]
,这非常好。