将元素添加到ruby数组返回新数组

src*_*ulo 34 ruby arrays copy new-operator

我想在数组中添加一个元素,但实际上没有更改该数组,而是返回一个新数组.换句话说,我想避免:

arr = [1,2]
arr << 3
Run Code Online (Sandbox Code Playgroud)

哪个会回归:

[1,2,3]
Run Code Online (Sandbox Code Playgroud)

改变arr本身.如何避免这种情况并创建一个新阵列?

Ser*_*sev 45

您可以使用plusoperator 轻松地在Ruby中添加两个数组.所以,只需从元素中创建一个数组.

arr = [1, 2]
puts arr + [3]
# => [1, 2, 3]
puts arr
# => [1, 2]
Run Code Online (Sandbox Code Playgroud)

  • 为什么在ruby中没有办法将一个项添加到一个影响原始数组的数组? (8认同)
  • 谢谢塞尔吉奥.这是我评论的重点. (3认同)

Mat*_*uya 7

它也可以通过使用*运算符扩展arr来实现

arr = [1,2]
puts [*arr, 3]
=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)