Metoda Pass jako parametr w Groovy
Czy istnieje sposób na przekazanie metody jako parametru w Groovy bez zawijania jej w zamknięcie? Wydaje się, że działa z funkcjami, ale nie z metodami. Na przykład, biorąc pod uwagę:
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
To działa:
foo(bar)
Ale jeślibar
to metoda w klasie:
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()
To się nie udajeBrak takiej właściwości: pasek dla klasy: Quux.
Jeśli zmienię metodę zawijaniabar
w zamknięciu działa, ale wydaje się niepotrzebnie gadatliwy:
def quuux() {
foo({ args -> bar(args) })
}
Czy jest czystszy sposób?