Array Ruby

class Array
  def extract!
    ary = self.dup
    self.reject! { |x| yield x }
    ary - self
  end
end
p a = ("a".."h").to_a
p a.extract! { |x| x < "e" && x != "b" }     # => ["a", "c", "d"]
p a                # => ["b", "e", "f", "g", "h"]