web-dev-qa-db-fra.com

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?

37
Eric Wilson

Dans groovy, les opérateurs au niveau du bit peuvent être remplacés par les méthodes leftShift (<<) et rightShift (>>) définies sur la classe. Il est idiomatique d'utiliser la méthode leftShift pour ajouter des actions sur des chaînes, des tampons, des flux, des tableaux, etc. et c'est ce que vous voyez ici.

Par exemple:

  • Les méthodes leftShift surchargées sur OutputStream qui sont utilisées pour ajouter des octets, un InputStream ou un Object au flux.
  • List , qui l'utilise également comme ajout

Vous regardez une bibliothèque de balises Grails, donc out représente la page en cours de rendu. Les résultats de ce taglib seront ajoutés au tampon de sortie qui sera rendu au client.

59
Ted Naleid

En supposant que out est System.out l'opérateur << écrit dans out dans ce cas. L'idiome à surcharger << pour la sortie (écriture dans un flux) et >> pour l'entrée (lecture dans un flux) vient de 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 droit pour la sortie et l'entrée.

6
Angel O'Sphere