2012-01-31 86 views
28

我想添加一個元素到一個數組,但沒有實際上改變該數組,而是它返回一個新的。換句話說,我想避免:添加元素到紅寶石陣列返回新陣列

arr = [1,2] 
arr << 3 

這將返回:

[1,2,3] 

更改編曲本身。我怎樣才能避免這一點,並創建一個新的數組?

回答

36

您可以使用plus運算符輕鬆地在Ruby中添加兩個數組。所以,只需製作一個數組即可。

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

完美延伸。謝謝! – srchulo 2012-01-31 00:36:49

+5

爲什麼ruby中沒有辦法將一個項目添加到數組中影響原始數組? – gitb 2014-12-04 20:36:06

+0

@gitb數組#+方法執行此操作;它會從加號運算符的左側和右側創建一個新數組,並返回新數組,並保留兩個操作數未修改。 – rodamn 2015-09-03 06:50:32

6

它也可以通過使用ARR *運算符

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

基準測試,它慢得多 – user3033467 2018-01-19 16:40:52