开发者

What is the groovy << operator mean in this context?

开发者 https://www.devze.com 2023-01-14 16:02 出处:网络
In a groovy tutorial, I encountered the following code: class DateTagLib { def thisYear = { out << Calendar.getInstance().get(Calendar.YEAR)

In a groovy tutorial, I encountered the following code:

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

I don't know what the << means, and I'm having no luck with google.

开发者_Python百科

Edit: I now know that << sometimes is a bit shift. But what does it mean here?


In groovy, the bitwise operators can be overridden with the leftShift (<<) and rightShift (>>) methods defined on the class. It's idiomatic groovy to use the leftShift method for append actions on strings, buffers, streams, arrays, etc and thats what you're seeing here.

For example:

  • The overloaded leftShift methods on OutputStream which are used to append bytes, an InputStream, or an Object to the stream.
  • List, which also uses it as an append

You are looking at a grails tag lib, so out represents the page that's being rendered. The results of this taglib will be added to the output buffer that will be rendered to the client.


Assuming that out is System.out the << operator writes to out in this case. The idiom to overload << for output (writing to a stream) and >> for input (reading from a stream) comes from C++. When the stdio libraries (istream ostream etc.) got defined, the idea was born to use left shift and right shift for output and input.

0

精彩评论

暂无评论...
验证码 换一张
取 消