2013-07-14 6 views

ответ

6

Рубиновые переменные содержат ссылки на объекты и = оператор копирует референции.

Кажется, что вы хотите clonea:

irb(main):001:0> a = [1,2,3,4] 
=> [1, 2, 3, 4] 
irb(main):002:0> b = a.clone << 5 
=> [1, 2, 3, 4, 5] 
irb(main):003:0> a 
=> [1, 2, 3, 4] 
irb(main):004:0> b 
=> [1, 2, 3, 4, 5] 
+4

Или, может быть, [ 'dup' ] (http://www.ruby-doc.org/core-2.0/Object.html#method-i-dup), в зависимости от того, чего хочет OP. См. Также [В чем разница между методами Ruby 'dup' и' clone'?] (Http://stackoverflow.com/questions/10183370/whats-the-differences-between-ruby-dup-and-clone-method) –

+0

@AndrewMarshall: Хороший момент, спасибо! – Johnsyweb

9

Просто просуммировать два массива:

a = [1,2,3,4] 
b = a + [5] 

# b == [1, 2, 3, 4, 5] 
# a == [1, 2, 3, 4] 
4

Я обычно делаю это так:

b = [*a, 5] 
+2

Или проще: 'b = * a, 5' –

+0

Это лучше. – sawa

Смежные вопросы