什么是“<<”红宝石到底做了什么?

时间:2012-02-08 20:55:15

标签: ruby-on-rails ruby object operators

我是Ruby新手,所以我还在学习一些东西。但是,我确实有很好的Java和C经验。

我想知道这究竟是什么:

[ 'a','b', 'c' ].each_with_index {|item, index| result << [item, index] }

具体来说,我对<<感兴趣。一些研究告诉我它用于位移,但显然不是这里的情况,那么它在这里做了什么?

4 个答案:

答案 0 :(得分:12)

在这种情况下,<<运算符正在向结果数组添加项目。

请参阅“ how to add elements to ruby array (solved)”。

答案 1 :(得分:6)

这是Array append operator

<<是一种方法,会为不同的类做不同的事情。 Array使用它将对象推送到数组的末尾。 Fixnums use it to shift

答案 2 :(得分:6)

在Ruby中,所有C / Java中的运算符,如+, - ,*,/等,实际上都是方法调用。您可以根据需要重新定义它们。

class MyInteger
  def +(other)
    42 # or anything you want
  end
end

Array将<<方法定义为“将此项目推送到此数组的末尾”。对于整数,它被定义为稍微移位。

除了Array之外,许多其他类定义<<来表示某种“附加”操作。

答案 3 :(得分:4)

这基本上是一个附加操作员。

它用于将元素附加到数组或子字符串附加到字符串

适用于阵列

1.9.2-p290:009&gt; arr = [1,2,3,4,5]

=> [1, 2, 3, 4, 5] 

1.9.2-p290:010&gt; arr&lt;&lt; 6

=> [1, 2, 3, 4, 5, 6] 

1.9.2-p290:011&gt;

对于字符串

1.9.2-p290:011&gt; str =“ruby”

=> "ruby" 

1.9.2-p290:012&gt; str&lt;&lt; '轨道'

=> "rubyrails" 

1.9.2-p290:013&gt;