2010-09-04 35 views
25

En un tutorial maravilloso, me encontré con el siguiente código:¿Qué significa el operador groovy << en este contexto?

class DateTagLib { 
    def thisYear = { 
    out << Calendar.getInstance().get(Calendar.YEAR) 
    } 
} 

No sé lo que el << medios, y estoy teniendo suerte con Google.

Edit: Ahora sé que << a veces es un cambio de bit. Pero, ¿qué significa esto aquí?

+0

Sin haber visto una línea de Groovy en toda mi vida, parece que 'out << foo' podría ser la sintaxis de' return foo'. O sale un tipo de objeto con una sobrecarga funky que da como resultado lo mismo, es decir, el operador '<<' en el objeto 'out' simplemente devuelve su valor de parámetro ... –

+0

parece que '' = '' sería más apropiado aquí pero tampoco lo entiendo realmente. – djangofan

Respuesta

46

En groovy, los operadores bit a bit se pueden anular con los métodos leftShift (<<) y rightShift (>>) definidos en la clase. Es genial usar el método leftShift para agregar acciones en cadenas, búferes, secuencias, matrices, etc. y eso es lo que estás viendo aquí.

Por ejemplo:

  • Los sobrecargados leftShift métodos en OutputStream que se utilizan para añadir bytes, un InputStream, o un Object a la corriente.
  • List, que también lo utiliza como un append

Usted está buscando en una lib etiqueta griales, tan fuera representa la página que se está representando. Los resultados de este taglib se agregarán al búfer de salida que se representará en el cliente.

5

Suponiendo que fuera es System.out el operador < < escribe a cabo en este caso. El modismo para sobrecargar < < para la salida (escritura en una secuencia) y >> para la entrada (lectura de una secuencia) proviene de C++. Cuando se definieron las bibliotecas stdio (istream ostream, etc.), nació la idea de utilizar el desplazamiento a la izquierda y el desplazamiento a la derecha para la salida y la entrada.