groovy - 是什么导致 Groovy 闭包出现此错误?
问题描述
a = {
b = {
println 'b'
}
println 'c'
}
a().b()
上面的代码会报错:
但删除后println 'c'
,a().b()
将打印 'b' 而没有错误。为什么会这样?
解决方案
没有 print 语句,b
由a
's 闭包隐式返回。添加println
原因 null (println()
是一种void
方法) 改为隐式返回。
如果您像这样修改您的闭包,它将按预期工作:
a = {
b = {
println 'b'
}
println 'c'
return b
}
在 Groovy 中写作return
是可选的;自动返回方法或闭包的最后一行。
推荐阅读
- r - R data.table 测试列索引向量的行相等性
- arrays - Postgres jsonb 数组连接
- javascript - 操作完成后杀死所有节点集群工作人员
- javascript - 复制多个文本字段
- cmake - 通过 CMake 构建 rust 库并将其用作导入的库目标
- python - Pycharm 中的 tkinter(python 版本 3.8.6)
- video - gstreamer 的 appsink 元素可以返回原始 rtp 时间戳吗?
- python - 为蛮力密码破解器优化 Python 循环
- tensorflow - 在 ImageDataGenerator.flow_from_directory() 上使用 expand_dims()
- r - 根据 2 个数据框中不匹配的 2 个元素识别观察结果