【发布时间】:2013-07-12 09:15:54
【问题描述】:
a = [1,2,3,4]
b = a << 5
a == [1,2,3,4] # returns false
如何在不修改a本身的情况下将b分配给a,并在末尾附加5?
【问题讨论】:
标签: ruby
a = [1,2,3,4]
b = a << 5
a == [1,2,3,4] # returns false
如何在不修改a本身的情况下将b分配给a,并在末尾附加5?
【问题讨论】:
标签: ruby
只需对两个数组求和:
a = [1,2,3,4]
b = a + [5]
# b == [1, 2, 3, 4, 5]
# a == [1, 2, 3, 4]
【讨论】:
Ruby 变量保存对象的引用,= 运算符复制引用。
看来你想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]
【讨论】:
dup,这取决于 OP 想要什么。另见What's the difference between Ruby's dup and clone methods?
我通常这样做:
b = [*a, 5]
【讨论】:
b = *a, 5