2011-03-22 22 views
21

He leído use palabra clave en Groovy. Pero no pudo salir, por lo que se ha usado exactamente. Y también vengo con categoría clases, en este tema, ¿qué es eso también? Y desde, Groovy En Acción¿Cuál es el uso de la palabra clave/método "usar" en groovy?

class StringCalculationCategory { 
    static def plus(String self, String operand) { 
    try { 
     return self.toInteger() + operand.toInteger() 
    } catch (NumberFormatException fallback) { 
     return (self << operand).toString() 
    } 
    } 
} 

use (StringCalculationCategory) { 
    assert 1 == '1' + '0' 
    assert 2 == '1' + '1' 
    assert 'x1' == 'x' + '1' 
} 

Con el código anterior, ¿alguien puede decir lo que es el uso de la palabra clave en use maravilloso? Y también lo que hace el código anterior?

+0

hey man, ¿valió la pena que aprendieras groovy? Estoy pasando por el mismo libro y el hombre es un poco desafiante –

+4

@simon: es un excelente libro que puedes encontrar! –

Respuesta

17

Consulte el Pimp My Library Pattern para lo que use hace.

En su caso, sobrecarga el operador String.add(something). Si ambas cadenas se pueden usar como enteros (toInteger() no arroja una excepción), devuelve la suma de esos dos números; de lo contrario, devuelve la concatenación de las cadenas.

11

uso es útil si tiene una clase que no tiene el código fuente (por ejemplo, en una biblioteca) y que desea añadir nuevos métodos a esa clase.

Por cierto, this post en Blog inspirada en hechos reales estados de Dustin Marx:

El uso "palabra clave" en realidad no es una palabra clave, pero es un método de extensión GDK del maravilloso del Objeto clase y se proporciona a través de Object.use (Category, Closure). Existen numerosos otros métodos provistos en el objeto Groovy GDK que proporcionan un acceso conveniente a la funcionalidad y pueden aparecer como palabras clave del lenguaje o funciones porque no necesitan el nombre de un objeto para proceder con ellas. No utilizo para usar variables en mis scripts Groovy con estos nombres (como es, println y sleep) para evitar posibles problemas de legibilidad.

Hay otros similares "palabras clave" que son en realidad métodos de la clase de objetos, tales como con. El Groovy JDK documentation tiene una lista de tales métodos.

Cuestiones relacionadas