Что означает оператор groovy << в этом контексте?

В учебнике groovy я столкнулся со следующим кодом:

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

Я не знаю, что означает <<, и мне не повезло с Google.

Изменить: Теперь я знаю, что << иногда является сдвигом бит. Но что это значит?

Ответ 1

В groovy побитовые операторы могут быть переопределены с помощью методов leftShift (<<) и rightShift (>>), определенных в классе. Идиоматический groovy использовать метод leftShift для добавления действий к строкам, буферам, потокам, массивам и т.д. И вот что вы видите здесь.

Например:

  • Перегруженные методы leftShift на OutputStream, которые используются для добавления байтов, InputStream или Object в поток.
  • List, который также использует его как добавление

Вы смотрите на теги lib grails, поэтому out представляет страницу, которая отображается. Результаты этого taglib будут добавлены в выходной буфер, который будет передан клиенту.

Ответ 2

Предполагая, что out является System.out < оператор записывает в этом случае. Идиома для перегрузки < < для вывода (запись в поток) и → для ввода (чтение из потока) происходит из С++. Когда были определены библиотеки stdio (istream ostream и т.д.), Появилась идея использовать сдвиг влево и вправо для вывода и ввода.