peliculas - groovy series
Groovy equivalente a Ruby''s Object#tap (1)
¿Hay algún equivalente en el método Groovy to Ruby''s Object # tap que pase el objeto a un cierre donde el objeto se convierte en self y luego devuelve el objeto? Sé de DefaultGroovyMethods.with, pero eso requiere que devuelva explícitamente el objeto para poder encadenarlo o asignarlo. Si no, ¿hay alguna forma de que pueda implementarlo yo mismo y tenerlo disponible para todos los objetos como los otros métodos en DefaultGroovyMethods? Es bastante fácil tomar la implementación de DefaultGroovyMethods.with y siempre devolver el objeto en lugar del valor de retorno del cierre, pero ¿puede estar disponible para todos los objetos? Según esta publicación, no hay forma de extender DefaultGroovyMethods, pero ¿hay alguna otra forma de hacerlo?
No hay un método similar al que conozco en groovy, pero deberías poder hacer:
Object.metaClass.tap = { Closure c ->
delegate.with c
delegate
}
(1..10) .tap { println "original ${it}" }
.findAll { it % 2 == 0 } .tap { println "evens ${it}" }
.collect { it * it } .tap { println "squares ${it}" }
huellas dactilares:
original [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens [2, 4, 6, 8, 10]
squares [4, 16, 36, 64, 100]