40 votes

Que signifie l'opérateur groovy << dans ce contexte ?

Dans un tutoriel groovy, j'ai rencontré le code suivant :

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

Je ne sais pas ce que le << signifie, et je n'ai pas de chance avec google.

Edit : Je sais maintenant que << est parfois un peu décalé. Mais qu'est-ce que cela signifie ici ?

67voto

Ted Naleid Points 13349

En groovy, les opérateurs bitwise peuvent être remplacés par l'option leftShift (<<) y rightShift (>>) méthodes définies sur la classe. Il est idiomatique en groovy d'utiliser la fonction leftShift pour les actions d'ajout sur les chaînes, les tampons, les flux, les tableaux, etc. et c'est ce que vous voyez ici.

Par exemple :

  • La surcharge leftShift méthodes sur OutputStream qui sont utilisés pour ajouter des octets, un InputStream ou un Object au cours d'eau.
  • List qui l'utilise également comme appendice

Vous regardez un tag lib grails, donc out représente la page qui est rendue. Les résultats de cette taglib seront ajoutés au tampon de sortie qui sera rendu au client.

6voto

Angel O'Sphere Points 1469

En supposant que out es System.out l'opérateur << écrit dans out dans ce cas. L'idiome de surcharger << pour la sortie (écriture dans un flux) et >> pour l'entrée (lecture dans un flux) vient du C++. Lorsque les bibliothèques stdio (istream ostream etc.) ont été définies, l'idée est née d'utiliser le décalage à gauche et le décalage à droite pour la sortie et l'entrée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X