在ruby中返回没有特定元素的数组

Nic*_*nto 3 ruby arrays

我在http://www.ruby-doc.org/core-2.1.2/Array.html中看起来非常努力,但我找不到这种行为的快速功能:

arr = [1,2,3,4,5,6]

arr.without(3,6) #=> [1,2,4,5]
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写自己的函数/ monkey-patch ruby​​ /添加类方法/将它写成几行.

有没有办法以红宝石的方式做到这一点?

Nic*_*nto 10

这是在 Rails 5 中添加的:)

https://github.com/rails/rails/issues/19082

module Enumerable
  def without(*elements)
    reject { |element| element.in?(elements) }
  end
end
Run Code Online (Sandbox Code Playgroud)

这只是美学,但它对大脑有意义


Ian*_*ney 7

你可以使用减法:

arr - [3,6]
Run Code Online (Sandbox Code Playgroud)

编辑

如果你真的想要你可以别名这个方法

class Array
  alias except - 
end
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

arr.except [3,6]
Run Code Online (Sandbox Code Playgroud)