Ruby 1.9.3のドキュメントを調べると、Array#<<とArray#Pushの両方が、現在の配列の最後に要素を追加するように設計されました。しかし、微妙なようです2つの違い。
私が遭遇したのは、*演算子を使用して、他の配列全体の内容を現在の配列に追加できることです。ただし、#Pushのみです。
a = [1,2,3]
b = [4,5,6]
a.Push *b
=> [1,2,3,4,5,6]
代わりに#<<を使用しようとすると、ドット演算子や括弧と共に使用されるかどうかに応じて、さまざまなエラーが発生します。
なぜ#<<が#Pushと同じように機能しないのですか?実際には、一方は他方のエイリアスではありませんか?
<<
は機能せず、Push
は機能します:
Push
は多くの引数を受け入れることができます(*b
)。<<
は単一の引数のみを受け入れます。ここで注意すべきもう1つの重要な点は、<<
も演算子です。そして、三項演算子のようないくつかの演算子よりも優先順位が低くなります。これにより、予期しない結果が生じる可能性があります。例えば:
arr1, arr2 = [], []
arr1.Push true ? 1 : 0
arr1
# => [1]
arr2 << true ? 1 : 0
arr2
# => [true]
Push
メソッドは、配列の末尾に項目を追加します。複数の引数を指定できます。 <<
は配列の初期化に使用され、引数を1つだけ持つことができます。すでに初期化されている場合、配列の最後に要素を追加します。