Можно ли добавить группу классов в качестве делегатов в groovysh - PullRequest
0 голосов
/ 16 октября 2018

Когда я запускаю groovysh, я хотел бы добавить несколько классов, чтобы они выполнялись, как если бы они были делегатами.Это должно работать так:

при условии, что эти классы существуют:

def A{
   def test() {println "test"}       
}

def B{
   def test2() {println "test2"}
}

Я бы хотел сделать это:

groovysh
groovy:000>test()
test
groovy:000>test2()
test2

Я мог бысканировать классы и вручную добавлять каждый метод в файл groovy.properties, но это было бы чрезвычайно хрупко.

Есть ли какой-либо способ указать эти классы как делегаты или как-то заставить его действовать так, как будто я что-то сделалэквивалентно:

new A().using{new B.using{ <groovysh runs in here> }}

1 Ответ

0 голосов
/ 16 октября 2018

Не очень хороший ответ:

Я только что понял, что один из возможных ответов: загрузить скрипт, который выглядит следующим образом:

classA=new A()
classb=new B()
test=classA.&test
test2=classB.&test

Это не очень хороший ответ, потому чтоМне нужно было создать эти ссылки на методы для каждого метода, который я хотел бы представить, но, поскольку он будет работать, я решил опубликовать его.

РЕДАКТИРОВАТЬ - еще один плохой ответ

Другой возможностью было бы сделать все методы статическими и выполнить статический импорт каждого класса.Это лучше, но мне придется реорганизовать все классы, которые я хочу загрузить ... все еще не круто.

Я надеюсь, что кто-то публикует что-то лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...