a = {
b = {
println 'b'
}
println 'c'
}
a().b()
上面的代码将导致错误:
但是在删除println 'c'
之后,a().b()
将正确地打印'b'。
为什么会这样?
答案 0 :(得分:1)
没有print语句,b
由a
的闭包隐式返回。添加println
会导致隐式返回null(println()
是一种void
方法)。
如果您这样修改闭包,它将按预期工作:
a = {
b = {
println 'b'
}
println 'c'
return b
}
在Groovy中写return
是可选的;方法或闭包的最后一行会自动返回。