Lo + Leído
Eventos destacados
Artículos para tus primeros pasos
Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos:
- Introducción a Groovy, parte 1 (Andrés Almiray)
- Introducción a Groovy, parte 2 (Andrés Almiray)
- Introducción a Groovy, parte 3 (Andrés Almiray)
- Introducción a Grails (Material Seminario ImaginaWorks)
Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:
Groovy: primeros pasos
Hola,
En el ejemplo que sigue intercepto el método toString()
de la clase Integer.
Cuando ejecuto el programa adjunto
la llamada
println n
no produce una llamada a
n.toString()
como yo esperaba.
¿Hay algo que esté haciendo mal?
Un saludo
Casiano
**********************
#!/usr/bin/env groovy
Scanner sc = new Scanner(System.in)
Integer n
print "Give me an unsigned integer: "
if (sc.hasNextInt()) n = sc.nextInt() else {
System.err.println ("Error: number expected, found '${sc.next()}' instead")
System.exit(1)
}
def names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six',
'seven', 'eight', 'nine' ]
def aux = { Integer k ->
m = ''
while (k != 0) {
r = k % 10
k = k / 10
m = "${names[r]} $m"
}
m
}
Integer.metaClass.toString = {-> aux(delegate) }
Integer.metaClass.'static'.
String.metaClass.'static'.valueOf = { Integer m-> '666' }
println n.toString()
println n // no es interceptado!
println Integer.toString(n)
println String.valueOf(n)
********************
Produce esta salida:
*************************
~/Lgroovy/mop$ groovy InterceptingIntegerViaMetaClass.groovy
Give me an unsigned integer: 432
four three two
432
four three two
666
*************************
Un momento...