Groovy闭包出现此错误的原因是什么?

Groovy闭包出现此错误的原因是什么?,groovy,closures,Groovy,Closures,上述代码将导致错误: 但是在删除println'c'后,a().b()将无错误地打印'b'。 为什么会发生这种情况?没有print语句,a的闭包隐式返回了b。添加println会导致隐式返回null(println()是void方法) 如果您这样修改闭包,它将按预期工作: a = { b = { println 'b' } println 'c' } a().b() 在Groovy中编写return是可选的;方法或闭包的最后一行将自动返回。请将代码和

上述代码将导致错误:

但是在删除
println'c'
后,
a().b()
将无错误地打印'b'。
为什么会发生这种情况?

没有print语句,
a
的闭包隐式返回了
b
。添加
println
会导致隐式返回null(
println()
void
方法)

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

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

a().b()

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

请将代码和错误消息作为文本而不是图像发布。这使得它们更容易阅读和搜索。我不认为你的代码在做你认为它是什么
a = {
    b = {
        println 'b'
    }
    println 'c'
    return b
}