GroovyShell().parse передаваемые параметры

У меня есть отличный скрипт, которому нужно проанализировать класс из внешнего скрипта. Я не уверен, как передать параметры. Вот что работает:

Сценарий Groovy, который я запускаю, использует эту строку для анализа внешнего класса из external.groovy:

new GroovyShell().parse(new File('External.groovy'))

Вот как выглядит external.groovy:

class External {
    public external() {
        println "Hello"
    }
}

Оно работает.

У меня проблема, я не могу найти способ передать параметры внешнему методу. Вот как должен выглядеть external.groovy:

class External {
    public external(String name) {
        println name
    }
}

Как добавить параметры в работающий скрипт:

new GroovyShell().parse(new File('external.groovy')) //need to include the 'Name' parameter to this

person user2475310    schedule 11.06.2014    source источник
comment
Каков вариант использования? Не знаю, как с этим справиться, но, возможно, это можно было бы сделать немного по-другому.   -  person Opal    schedule 11.06.2014
comment
здесь мой ответ из другого поста, может быть, полезен /вопросы/24090660/   -  person hexin    schedule 11.06.2014


Ответы (1)


  1. parse только анализирует ваш файл и не выполняет его
  2. Вы также должны позвонить run
  3. вам нужно создать экземпляр вашего файла И вам нужно вызвать свой метод и указать ему параметр
  4. вам нужно указать параметр через объект Binding

Вот класс и вызов

class External {
     public external(String name) {
        println name
    }
}
new External.external(somename)

а потом

def bindings = new Binding()
bindings.setVariable("somename", "mrhaki")
def shell = new GroovyShell(bindings)
shell.parse(new File('external.groovy'))
shell.run()
person robkuz    schedule 11.06.2014