a = [1,2,3,4]
b = a << 5
a == [1,2,3,4] # returns false
Как назначить b
к a
с 5
приложенными к концу, не изменяя a
сам?Предотвратить побочные эффекты в Рубине
a = [1,2,3,4]
b = a << 5
a == [1,2,3,4] # returns false
Как назначить b
к a
с 5
приложенными к концу, не изменяя a
сам?Предотвратить побочные эффекты в Рубине
Рубиновые переменные содержат ссылки на объекты и =
оператор копирует референции.
Кажется, что вы хотите clone
a
:
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]
Просто просуммировать два массива:
a = [1,2,3,4]
b = a + [5]
# b == [1, 2, 3, 4, 5]
# a == [1, 2, 3, 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) –
@AndrewMarshall: Хороший момент, спасибо! – Johnsyweb