Adicionar método ao fechamento
Eu adicionei um método paraClosure
'smetaClass
, mas parece que não consigo obter uma referência para a instância em que o método está sendo chamado. Neste exemplo,delegate
está definido para a instância de script, não of
encerramento estou invocandofixedPoint
em:
Closure.metaClass.fixedPoint = {
while (it != (it = delegate.call(it))) {}
it
}
def f = { Math.round(it / 2.0) }
println f.fixedPoint(9)
dá
Caught: groovy.lang.MissingMethodException: No signature of method: test.call() is applicable for argument types: (java.lang.Integer) values: [9]
O que estou fazendo errado aqui?