2010-09-04 107 views
25

在常規教程中,我遇到了下面的代碼:在這種情況下,groovy << operator是什麼意思?

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

我不知道<<手段是什麼,以及我在與谷歌沒有運氣。

編輯:我現在知道<<有時候會有點變化。但這裏是什麼意思?

+0

在我的整個生活中沒有看到過一行Groovy,它看起來像'out << foo'可能是'return foo'的語法。或者out是某種具有時髦重載的對象,導致同樣的事情,即'out'對象上的'<<'操作符只是返回它的參數值... – 2010-09-04 07:34:49

+0

看起來像'<< ='會是這裏更合適,但我也不太瞭解它。 – djangofan 2013-01-16 00:55:54

回答

46

在常規中,按位運算符可以用該類上定義的leftShift (<<)rightShift (>>)方法覆蓋。使用leftShift方法對字符串,緩衝區,流,數組等進行追加操作,這就是慣用的習慣,這就是你在這裏看到的。

例如:

  • 重載leftShift方法上OutputStream其用於附加字節,一個InputStreamObject到流。
  • List,也使用它作爲一個附加

你正在尋找一個Grails標記庫,讓出代表真實所呈現的頁面。該taglib的結果將被添加到將呈現給客戶端的輸出緩衝區中。

5

假設的System.out的< <操作者在這種情況下寫入到。 爲輸出(寫入流)重載< <以及用於輸入(從流中讀取)的「C++」來自C++。當stdio庫(istream ostream等)被定義時,這個想法就誕生了,使用左移和右移來輸出和輸入。