我正在学习 Groovy 并遇到了这种奇怪的行为。在没有问题的情况下执行以下代码groovysh
,但将其保存为 'foo.groovy' 并通过运行它会groovy foo.groovy
导致MissingPropertyException: No such property: a for class: foo
第 3 行中的结果:
def a(n) { n*n }
def x(m) { m(2) }
x(a)
更改a
为闭包a = { n -> n*n }
会使此错误消失,但对于更复杂的实际用例,我想避免这种情况。我还发现这个问题在类中处理相同的问题,但是使用的解决方案this.&
不适用,因为我的方法不在类中,并且来自 python 背景,我想保留它那样。
我究竟做错了什么?这种行为记录在哪里?