Groovy Функция Calll динамически - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу сохранить имя функции каждого объекта на карте ha sh и иметь возможность вызывать его на основе его имени (строки).

Например, в python я могу выполнить следующее:

def function_1(a1, a2, a3):
    return a1+a2+a3
def function_2(a1, a2, a3):
    return a3-a2-a1
def function_3(a1, a2, a3):
    return a1*a2*a3

for func in ['function_1', 'function_2', 'function_3']:
    result = globals()[func](arg1, arg2, arg3)
    print (result)

делает ли что-то подобное в groovy (что-то вроде использования глобалов в python)? я хочу иметь возможность хранить имена функций в виде строк где-то ...

и нет, я не хочу использовать классы здесь

1 Ответ

0 голосов
/ 26 апреля 2020

Вы можете объявить методы

def function_1(a1, a2, a3) {
    a1+a2+a3
}

...

Или замыкания

def function_1 = {a1, a2, a3 ->
    a1+a2+a3
}

...

Затем выполните

['function_1', 'function_2', 'function_3'].each { func ->
    def result = "$func"(arg1, arg2, arg3)
    println result
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...