运行groovysh
v2.3.6:
groovy:000> def f = {x -> x}
groovy:000> f(1)
ERROR groovy.lang.MissingMethodException:
No signature of method: groovysh_evaluate.f() is applicable for argument types: (java.lang.Integer) values: [1]
Possible solutions: is(java.lang.Object), run(), run(), find(), any(), any(groovy.lang.Closure)
此错误是closure
上groovysh
的已知错误吗?
答案 0 :(得分:1)
是的,这是一个已知问题,在groovysh中使用def并不像你期望的那样工作。使用def
或数据类型声明的变量不会存储在GroovyShell的绑定中,而shell正在查找在repl中输入的名称。
如果您声明变量而不使用def,它将起作用:
f = { x -> x }