首页 > 解决方案 > 是什么导致 Groovy 闭包出现此错误?

问题描述

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

a().b()

上面的代码会报错:

像这样的错误

但删除后println 'c'a().b()将打印 'b' 而没有错误。为什么会这样?

标签: groovyclosures

解决方案


没有 print 语句,ba's 闭包隐式返回。添加println原因 null (println()是一种void方法) 改为隐式返回。

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

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

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


推荐阅读