非破坏性地从数组中删除元素

Removing elements from an array non-destructively

给定一个数组 arr 和一个对象 v,我想要一个 arr 的副本,其中的元素不等于 v

我找到了这两个解决方案:

newarr = arr.dup
newarr.delete(v)

newarr = arr.reject {|a| a == v}

有更简单的方法吗?

我想知道 Ruby 是否已经有类似的东西:

newarr = arr.without(v)
[1, 2, 3, 4, 4, 5, 5] - [4]
#⇒ [1, 2, 3, 5, 5]

如果这对您来说太麻烦,请使用:

[1, 2, 3, 4, 4, 5, 5].reject(&4.method(:==))
#⇒ [1, 2, 3, 5, 5]