Как присвоить groovy функцию переменной и вызвать ее? - PullRequest
1 голос
/ 08 апреля 2020

Я хочу сделать что-то вроде этого:

boolean flag = ...;
def foo(String x, String y) {
  // ...
}
def foo2(String x, String y) {
  // ...
}
def fun = flag ? foo : foo2;
fun("aaa", "bbb");

возможно ли что-то подобное?

1 Ответ

2 голосов
/ 08 апреля 2020

Вы можете использовать указатели методов :

def foo(String x, String y) {
   "FOO $x $y"
}
def foo2(String x, String y) {
   "FOO-TWOOO $x $y"
}

boolean flag = false
def fun = flag ? this.&foo : this.&foo2;
println fun("aaa", "bbb") // prints "FOO aaa bbb"

flag = true
fun = flag ? this.&foo : this.&foo2;
println fun("aaa", "bbb") // prints "FOO-TWOOO aaa bbb"

С Groovy 3, вы можете сделать это также Java :

def fun = flag ? this::foo : this::foo2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...