我對Ruby非常陌生,並且對<<
運算符感到疑惑。當我用Google搜索這個操作符,它說,它是給這個例子二進制向左移位運算符:關於Ruby的澄清<<操作符
但是
a << 2
會給15
這是1111 0000
,它似乎並沒有成爲一個「二進制在此代碼向左移位運算符」:
class TextCompressor
attr_reader :unique, :index
def initialize(text)
@unique = []
@index = []
add_text(text)
end
def add_text(text)
words = text.split
words.each { |word| do add_word(word) }
end
def add_word(word)
i = unique_index_of(word) || add_unique_word(word)
@index << i
end
def unique_index_of(word)
@unique.index(word)
end
def add_unique_word
@unique << word
unique.size - 1
end
end
和this question似乎並不在我所提供的代碼申請。因此,使用我的代碼,Ruby <<
運算符是如何工作的?
它根據什麼「a」做了不同的事情。這是預期的。 (在這種情況下,「a」是一個「Fixnum」,記住操作符只是方法,所以它可以寫成:'1 .__ send __(:<<,16)';這也意味着操作符,最少的<< <<,在他們的第一個參數上是* polymorphic *) – 2012-03-16 00:44:03
你不能谷歌它,但你可以symbolhound它:http://symbolhound.com/?q=array+%3C%3C – 2012-03-16 01:26:52
@AndrewGrimm你讓我泄漏了我的一杯咖啡。我一直在尋找像這樣的工具。 – user2398029 2012-03-16 02:27:26