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
}