I want to do something like this:
boolean flag = ...;
def foo(String x, String y) {
// ...
}
def foo2(String x, String y) {
// ...
}
def fun = flag ? foo : foo2;
fun("aaa", "bbb");
is something simillar possible?
You can use method pointers:
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-TWOOO aaa bbb"
flag = true
fun = flag ? this.&foo : this.&foo2;
println fun("aaa", "bbb") // prints "FOO aaa bbb"
With Groovy 3, you can do it the Java way too:
def fun = flag ? this::foo : this::foo2;