groovysh上的闭包错误

groovysh上的闭包错误,groovy,groovyshell,Groovy,Groovyshell,运行groovyshv2.3.6: groovy:000> def f = {x -> x} groovy:000> f(1) 这个错误是groovysh上的closure的已知错误吗?是的,这是一个已知的问题,在groovysh中使用def并不像您预期的那样工作。使用def或数据类型声明的变量不会存储在GroovyShell的绑定中,shell在该绑定中查找repl中输入的名称 如果您在不使用def的情况下声明变量,它将起作用,如下所示: f = { x -> x }

运行
groovysh
v2.3.6:

groovy:000> def f = {x -> x}
groovy:000> f(1)

这个错误是
groovysh
上的
closure
的已知错误吗?

是的,这是一个已知的问题,在groovysh中使用def并不像您预期的那样工作。使用
def
或数据类型声明的变量不会存储在GroovyShell的绑定中,shell在该绑定中查找repl中输入的名称

如果您在不使用def的情况下声明变量,它将起作用,如下所示:

f = { x -> x }

closure
被认为是一个
表达式时,从命名的
closure
中删除
def
关键字实际上更受欢迎
f = { x -> x }