2012-12-17 122 views
3

可能重复:
Interested in what the “<<” does双小于红宝石

我读Ruby class inheritance: What is `<<` (double less than)?。我知道它有助于为实例创建方法(类型的继承)。但我碰到一个代码:

threads << Thread.new(page) { |myPage| 
h = Net::HTTP.new(myPage, 80) 
puts "Fetching: #{myPage}" 
resp, data = h.get('/', nil) 
puts "Got #{myPage}: #{resp.message}" 
} 

其中threads是一个数组。有人可以用对象而不是类来解释<<的用法吗?

+2

将<< <<追加到数组中。所以一个新的'Thread'对象被添加到'threads'数组中。 –

回答

9

<<运营商可以超载基本上做任何事情,因为它的只是一种方法。一个类可以自由地为<<运算符定义自己的行为。在这种情况下,threads是一个数组或类似数组的对象,典型的数组语义使用<<作为push的别名。该代码只是将一个新的Thread附加到名为threads的阵列上。