Czy istnieje sposób przekazania metody jako parametru w Groovy bez owijania jej w zamknięciu? Wydaje się, że działa z funkcjami, ale nie z metodami. Na przykład, biorąc pod uwagę następujące elementy:Metoda przekazywania jako parametr w Groovy
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śli bar
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()
nie powiedzie się z Brak takiej własności: bar dla klasy: Quux.
Gdybym zmienić metodę zawinąć bar
w zamknięciu, to działa, ale wydaje się niepotrzebnie gadatliwy:
def quuux() {
foo({ args -> bar(args) })
}
Czy istnieje przejrzysty sposób?