2012-01-31 22 views
28

Bir diziye bir eleman eklemek istiyorum ancak bu diziyi değiştirmeden ekledim ve yerine yeni bir tane döndürdüm. Diğer bir deyişle, ben kaçınmak istiyorum:ruby ​​dizisine öğe ekle new dizilimi döndür

arr = [1,2] 
arr << 3 

dönecekti hangisi:

[1,2,3] 

kendisi varış değiştirme. Bundan nasıl kaçınıp yeni bir dizi oluşturabilirim?

cevap

36

Ruby'de plus işleciyle iki diziyi kolayca ekleyebilirsiniz. Yani, sadece elementinizden bir dizi yapın.

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

kullanmamız arr uzatarak çalışır. Teşekkürler! – srchulo

+5

Neden orijinal diziyi etkileyen bir diziye öğe eklemek için ruby'de bir yol yoktur? – gitb

+0

@gitb Dizi # + yöntemi bunu yapar; sol operatörden artı operatörün sağ tarafına yeni bir dizi oluşturur ve her iki işleneni değiştirmeden bırakarak yeni diziyi döndürür. – rodamn

6

aynı zamanda operatör *

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

Kıyaslama, çok daha yavaş – user3033467