非变异数组推送方法等效

时间:2018-03-14 17:13:03

标签: arrays ruby

我想以非变异的方式向数组添加新元素。在JS中,我可以这样做:

var new_arr = arr.concat(3)

而不是:

arr.push(3)

我如何在Ruby中做同样的事情? Ruby中的concat方法正在发生变异。

3 个答案:

答案 0 :(得分:9)

这很简单:

new_arr = arr + [3]

答案 1 :(得分:0)

我将使用似乎不太尴尬的数组splat添加另一个解决方案:

new_arr = [*arr, 3]

答案 2 :(得分:-1)

仅供参考:这不是非变异数组推送方法的等价物。但是,您可以使用array union

组合两个排除重复值的数组
new_arr = arr | [3]

注意:Union - 通过将ary与other_ary连接来返回一个新数组,不包括任何重复项并保留原始数组中的顺序。