调用其他脚本中定义的Closure

时间:2013-04-23 03:18:39

标签: variables binding groovy

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

中定义了一个闭包

SomeScript.groovy

bindingC = {
    ...
}

def localC = {
    ...
}

OtherScript.groovy

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

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

1 个答案:

答案 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