在一个groovy教程中,我遇到了以下代码:
class DateTagLib {
def thisYear = {
out << Calendar.getInstance().get(Calendar.YEAR)
}
}
我不知道<<
意味着什么,而且谷歌没有运气。
编辑:我现在知道<<
有时会有点转变。但这在这里意味着什么?
答案 0 :(得分:57)
在groovy中,可以使用类上定义的leftShift (<<)
和rightShift (>>)
方法覆盖按位运算符。使用leftShift
方法对字符串,缓冲区,流,数组等进行追加操作,这是惯用的常规,这就是你在这里看到的。
例如:
OutputStream
上的重载leftShift
方法,用于向流附加字节,InputStream
或Object
。List
,也将其用作追加您正在查看grails标记库,因此out表示正在呈现的页面。此taglib的结果将添加到将呈现给客户端的输出缓冲区中。
答案 1 :(得分:6)
假设 out 是 System.out &lt;&lt;在这种情况下,运算符写入 out 。 重载的习惯用法&lt;&lt;输出(写入流)和&gt;&gt;输入(从流中读取)来自C ++。当stdio库(istream ostream等)被定义时,这个想法诞生于使用左移和右移输出和输入。