web-dev-qa-db-ja.com

このコンテキストでのgroovy <<演算子の意味は何ですか?

グルーヴィーなチュートリアルで、次のコードが見つかりました。

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

<<の意味がわからないので、Googleでうまくいきません。

編集:<<がビットシフトになることがあることがわかりました。しかし、これはどういう意味ですか?

37
Eric Wilson

Groovyでは、ビットごとの演算子は、クラスで定義されたleftShift (<<)およびrightShift (>>)メソッドでオーバーライドできます。文字列、バッファ、ストリーム、配列などにアクションを追加するためにleftShiftメソッドを使用するのは慣用的なグルーヴィーであり、これがここに表示されているものです。

例えば:

  • ストリームにバイト、leftShift、またはOutputStreamを追加するために使用される InputStream のオーバーロードされたObjectメソッド。
  • List 、これも追加として使用します

あなたはgrailsタグlibを見ているので、outはレンダリングされているページを表しています。このtaglibの結果は、クライアントにレンダリングされる出力バッファーに追加されます。

59
Ted Naleid

outSystem.outであると想定すると、この場合、<<演算子はoutに書き込みます。 <<(出力(ストリームへの書き込み)の場合)および>>(入力(ストリームからの読み取り)の場合)をオーバーロードするイディオムは、C++から来ています。 stdioライブラリ(istream ostreamなど)が定義されると、出力と入力に左シフトと右シフトを使用するというアイデアが生まれました。

6
Angel O'Sphere