Что оператор << определенно использует в граалях?

1

Я начинаю работать с граалем.
Я довольно запутался в граале об использовании этого оператора << (поразрядный левый сдвиг).

Я думаю, что это использование для назначения некоторого значения/объекта, например
присвоено << assignValue

def outputBook = { output << Book.read(1) }

Это определенная концепция или нет? Заранее спасибо.

  • 0
    вывод содержит значение Book.read (1) и возвращает его или что-то еще. Может кто-нибудь помочь с этим?
Теги:
groovy
grails
grails-plugin
grails-2.0

1 ответ

1
Лучший ответ

Технически это оператор Groovy, а не Grails, и это аддитивный операнд. Кажется, я вспоминаю его делегатов к методу append левой руки. Поэтому для коллекции он добавит элемент в коллекцию.

Например:

def things = ['one', 'two']
assert things.size() == 2
things << 'three'
assert things.size() == 3

Оператор left shift << в Java используется только для побитовых операций. Однако Groovy переопределяет это, делегируя все операнды методам. Это позволяет вам реализовать свои собственные. Возьмем, к примеру, следующее использование плюса:

class Baby {
  String name
  String toString(){"Baby: ${name}"}
}
class Person {
  String name
  def plus(Person o) {
    return new Baby(name: "${this.name} - ${o.name}")
  }
​}

def person1 = new Person(name: "Person 1")
def person2 = new Person(name: "Person 2")
assert "Baby: Person 1 - Person 2" == (person1 + person2)
​

Довольно Groovy а?

  • 0
    спасибо за ответ. Можете ли вы привести несколько примеров с кратким.
  • 0
    Как сказал Джошуа Мур, это действительно пример «перегрузки операторов» в Groovy. Вероятно, наиболее часто используемый пример - метод collection-over-add (), но если вы посмотрите на некоторые скрипты Grails, они также используют эту перегрузку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню