"<<"在红宝石中究竟做了什么?

KZc*_*ing 4 ruby ruby-on-rails object operators

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

我想知道这到底是做什么的:

[ 'a','b', 'c' ].each_with_index {|item, index| result << [item, index] }
Run Code Online (Sandbox Code Playgroud)

具体来说,我对此感兴趣<<.一些研究告诉我它用于位移,但很明显,这不是这种情况,所以它在这里做了什么?

Bas*_*nni 12

<<在这种情况下,操作员正在向结果数组添加项.

请参阅" 如何向ruby数组添加元素(已解决) ".


Ale*_*x D 7

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

class MyInteger
  def +(other)
    42 # or anything you want
  end
end
Run Code Online (Sandbox Code Playgroud)

Array将<<方法定义为"在此数组的末尾推送此项".对于整数,它定义为稍微移位.

除了Array之外,许多其他类定义<<为表示某种"附加"操作.


Dav*_*ton 6

它是Array追加运算符.

<<是一种方法,并将为不同的类做不同的事情.Array使用它将对象推送到数组的末尾.Fixnums使用它来移动.