0

访问 Groovy 中另一个脚本中定义的闭包的正确和最简单的方法是什么。这可能不是最好的设计,但我在

SomeScript.groovy

bindingC = {
    ...
}

def localC = {
    ...
}

其他脚本.groovy

SomeScript s = new SomeScript()
s.bindingC(...);
s.localC(...);

注意:SomeScript.groovy 是程序逻辑,OtherScript.groovy 是单元测试逻辑。它们都在同一个包中,我已经能够访问 SomeScript 中的方法。

4

1 回答 1

3

您可以使用两种方法(我知道)来实现您想要的;您可以实例化SomeScript并运行其内容,也可以SomeScript使用 groovy shell 进行评估。需要执行脚本,以便在绑定中创建变量:

SomeScript.groovy:

bindingC = {
    110.0
}

OtherScript.groovy 解决方案1:

s = new GroovyShell().evaluate new File("SomeScript.groovy")
assert s.bindingC() == 110.0

OtherScript.groovy 解决方案2:

s2 = new SomeScript() // SomeScript is also an instance of groovy.lang.Script
s2.run()
assert s2.bindingC() == 110.0
于 2013-04-23T09:51:52.340 回答