什么<<运营商确定用于grails的用法?

时间:2014-03-29 18:35:56

标签: java grails groovy grails-2.0 grails-plugin

我开始用grails工作 关于使用这个<<<<<<<< (按位左移)运算符。

我认为它用于分配一些值/对象,如
assignedTo<< assignedValue

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

这是明确的概念吗? 谢谢你提前。

1 个答案:

答案 0 :(得分:1)

从技术上讲,这是一个Groovy而不是Grails运算符,它是加法操作数。我似乎记得它代表了左手的append方法。因此,对于集合,它会将元素添加到集合中。

例如:

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

左移&lt;&lt; Java中的运算符仅用于按位运算。但是,Groovy通过将所有操作数委托给方法来覆盖它。这允许您实现自己的。比如以下使用plus:

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嗯?