заводная переменная функция

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

скажем, у меня есть класс Service, где я делегирую бизнес-логику. методы в нем funA(), funB()... funX().

Теперь у меня есть класс контроллера, в котором я вызываю закрытие службы, которое можно вызвать как service.funA() . Теперь на основе переменной (которая может иметь значения A, B ... X) мне нужно вызвать правильное закрытие сервиса. В основном, чтобы избежать написания большого количества условных операторов if. Подойдет что-то вроде service."fun+var"(). Я не уверен, можно ли подставить переменную в имя замыкания (функции). или любым способом, передав функцию (имя) в качестве параметра... не уверен

Я думаю, что PHP имеет аналогичную функцию http://php.net/manual/en/functions.variable-functions.php

спасибо за любой указатель..


person bsr    schedule 25.04.2010    source источник


Ответы (1)


Да, это возможно. Это должно делать то, что вы хотите:

service."fun${var}"()

Правильное название — вызов динамического метода.

person Michael Borgwardt    schedule 25.04.2010