C'è un modo per passare un metodo come parametro in Groovy senza avvolgerlo in una chiusura? Sembra funzionare con le funzioni, ma non con i metodi. Per esempio, dato il seguente:Metodo passo come parametro in Groovy
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
Questo funziona:
foo(bar)
Ma se bar
è un metodo in una classe:
class Quux {
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
def quuux() {
foo(bar)
}
}
new Quux().quuux()
non riesce con No tali beni: bar per classe: Quux.
Se cambio il metodo per avvolgere bar
in una chiusura, funziona, ma sembra inutilmente prolisso:
def quuux() {
foo({ args -> bar(args) })
}
C'è un modo più pulito?