GroovyShell().parse 传递参数

use*_*310 3 groovy groovyshell

我有一个 groovy 脚本,需要从外部 groovy 脚本解析一个类。我不确定如何传递参数。这是有效的:

我正在运行的 Groovy 脚本使用这一行来解析 external.groovy 中的外部类:

new GroovyShell().parse(new File('External.groovy'))
Run Code Online (Sandbox Code Playgroud)

这是 external.groovy 的样子:

class External {
    public external() {
        println "Hello"
    }
}
Run Code Online (Sandbox Code Playgroud)

有用。

我遇到的问题,我找不到将参数传递给外部方法的方法。这是 external.groovy 的样子:

class External {
    public external(String name) {
        println name
    }
}
Run Code Online (Sandbox Code Playgroud)

如何向正在运行的脚本添加参数:

new GroovyShell().parse(new File('external.groovy')) //need to include the 'Name' parameter to this
Run Code Online (Sandbox Code Playgroud)

rob*_*kuz 5

  1. parse 只解析你的文件而不执行它
  2. 你必须调用run以及
  3. 你需要实例化你的文件并且你需要调用你的方法并给它参数
  4. 您需要通过Binding对象提供参数

这是课程和电话

class External {
     public external(String name) {
        println name
    }
}
new External.external(somename)
Run Code Online (Sandbox Code Playgroud)

进而

def bindings = new Binding()
bindings.setVariable("somename", "mrhaki")
def shell = new GroovyShell(bindings)
shell.parse(new File('external.groovy'))
shell.run()
Run Code Online (Sandbox Code Playgroud)