2012-01-31 6 views
28

を要素に追加したいのですが、は実際にその配列を変更せず、代わりに新しい配列を返します。言い換えれば、私は避けたい:ルビ配列に要素を追加する

返します
arr = [1,2] 
arr << 3 

[1,2,3] 

自体ARR変更します。これを回避して新しい配列を作成するにはどうすればよいですか?

答えて

36

plus演算子を使用してRubyに2つの配列を簡単に追加できます。だから、あなたの要素から配列を作るだけです。

arr = [1, 2] 
puts arr + [3] 
# => [1, 2, 3] 
puts arr 
# => [1, 2] 
+0

完璧を使用してARR拡張することによって動作します。ありがとう! – srchulo

+5

元の配列に影響する配列に項目を追加する方法がないのはなぜですか? – gitb

+0

@gitb配列#+メソッドはこれを行います。 plus演算子の左辺と右辺から新しい配列を作成し、新しい配列を返します。両方のオペランドは変更されません。 – rodamn

6

それはまた、*演算子

arr = [1,2] 
puts [*arr, 3] 
=> [1, 2, 3] 
+0

ベンチマーク済みです。 – user3033467

関連する問題