【发布时间】:2012-04-01 14:02:33
【问题描述】:
我对 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”是什么做不同的事情。
1 << 4 # => 16,这是预期的。 (在这种情况下,“a”是Fixnum。请记住,运算符只是方法,因此可以写成:上面的1.__send__(:<<, 16);这也意味着运算符,至少<<,是多态 在他们的第一个参数上。) -
你不能用谷歌搜索它,但你可以用符号搜索它:symbolhound.com/?q=array+%3C%3C
-
@AndrewGrimm 你让我把咖啡洒了。我一直在寻找这样的工具 很长时间了。
-
@AndrewGrimm 天哪,这可以合法地让生活变得如此轻松!