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

如何在不修改自身的情况下分配给附加b到末尾?a5a

4

3 回答 3

9

只需对两个数组求和:

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

# b == [1, 2, 3, 4, 5]
# a == [1, 2, 3, 4]
于 2013-07-14T10:18:34.490 回答
6

Ruby 变量保存对对象的引用=,操作员复制这些引用

您似乎希望: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]
于 2013-07-14T10:16:10.133 回答
4

我通常这样做:

b = [*a, 5]
于 2013-07-14T10:33:02.300 回答