Я начинаю работать с граалем.
Я довольно запутался в граале об использовании этого оператора << (поразрядный левый сдвиг).
Я думаю, что это использование для назначения некоторого значения/объекта, например
присвоено << assignValue
def outputBook = { output << Book.read(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 а?