什么是groovy<<算子意味着在这种情况下?

时间:2010-09-04 06:56:24

标签: groovy

在一个groovy教程中,我遇到了以下代码:

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

我不知道<<意味着什么,而且谷歌没有运气。

编辑:我现在知道<<有时会有点转变。但这在这里意味着什么?

2 个答案:

答案 0 :(得分:57)

在groovy中,可以使用类上定义的leftShift (<<)rightShift (>>)方法覆盖按位运算符。使用leftShift方法对字符串,缓冲区,流,数组等进行追加操作,这是惯用的常规,这就是你在这里看到的。

例如:

  • OutputStream上的重载leftShift方法,用于向流附加字节,InputStreamObject
  • List,也将其用作追加

您正在查看grails标记库,因此out表示正在呈现的页面。此taglib的结果将添加到将呈现给客户端的输出缓冲区中。

答案 1 :(得分:6)

假设 out System.out &lt;&lt;在这种情况下,运算符写入 out 。 重载的习惯用法&lt;&lt;输出(写入流)和&gt;&gt;输入(从流中读取)来自C ++。当stdio库(istream ostream等)被定义时,这个想法诞生于使用左移和右移输出和输入。