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.
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 onOutputStream
which are used to append bytes, anInputStream
, or anObject
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.
精彩评论