Есть ли способ передать метод в качестве параметра в Groovy без его упаковки в закрытии? Кажется, он работает с функциями, но не с методами. Например, учитывая следующее:
def foo(Closure c) {
c(arg1: "baz", arg2:"qux")
}
def bar(Map args) {
println('arg1: ' + args['arg1'])
println('arg2: ' + args['arg2'])
}
Это работает:
foo(bar)
Но если bar
- метод в классе:
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()
Это не работает с Нет такого свойства: bar для класса: Quux.
Если я изменяю метод на обертку bar
в закрытии, он работает, но выглядит излишне подробным:
def quuux() {
foo({ args -> bar(args) })
}
Есть ли более чистый способ?