【发布时间】:2017-09-21 08:01:02
【问题描述】:
鉴于这个 Groovy 程序:
def f(x) { return x }
g = f
println g(42)
将程序提供给 Groovy(2.4.12 版)解释器时,会打印一条错误消息:
groovy.lang.MissingPropertyException:没有这样的属性:f 对于类:x 在 x.run(x.groovy:3)
但是,将程序更改为
def f = { x -> x }
g = f
println g(42)
让解释器按预期打印“42”。
为什么f 的这两个定义有不同的处理方式?有没有办法调整g 的定义以使之前的版本运行(可能使用&. 运算符)?
【问题讨论】: