访问Groovy中另一个脚本中定义的闭包的正确和最简单的方法是什么。这可能不是最好的设计,但我在
中定义了一个闭包SomeScript.groovy
bindingC = {
...
}
def localC = {
...
}
OtherScript.groovy
SomeScript s = new SomeScript()
s.bindingC(...);
s.localC(...);
注意:SomeScript.groovy是程序逻辑,OtherScript.groovy是单元测试逻辑。它们都在同一个包中,我可以在SomeScript中访问方法。
答案 0 :(得分:3)
有两种方法(我知道)你可以用它来达到你想要的效果;您可以实例化SomeScript
并运行其内容,也可以使用groovy shell评估SomeScript
。需要执行脚本,以便在绑定中创建变量:
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