是什么导致Groovy Closure出现此错误?

时间:2020-01-08 03:32:15

标签: groovy closures

a = {
    b = {
        println 'b'
    }
    println 'c'
}

a().b()

上面的代码将导致错误:

error like this

但是在删除println 'c'之后,a().b()将正确地打印'b'。 为什么会这样?

1 个答案:

答案 0 :(得分:1)

没有print语句,ba的闭包隐式返回。添加println会导致隐式返回null(println()是一种void方法)。

如果您这样修改闭包,它将按预期工作:

a = {
    b = {
        println 'b'
    }
    println 'c'
    return b
}

在Groovy中写return是可选的;方法或闭包的最后一行会自动返回。