Issue #10729 has been updated by Benoit Daloze.


The block form can be achieved with Enumerable#partition.

I agree in general splitting an array, according to some property using the order of the elements (no take_drop_while) or to some other array (this request) is more difficult than it could be.

----------------------------------------
Feature #10729: Array method to subtract in place
https://bugs.ruby-lang.org/issues/10729#change-50929

* Author: Tsuyoshi Sawada
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
----------------------------------------
I request a method on array that takes another array, subtract that from self in place (= destructively), and return the subtracted elements:

    a = [1, 2, 3, 4, 5]
    a.some_method([2, 4, 6]) #=> [2, 4]
    a #=> [1, 3, 5]

Ideally, it should also allow a block:

    a = [1, 2, 3, 4, 5]
    a.some_method(&:even?) #=> [2, 4]
    a #=> [1, 3, 5]

This operation is quite frequent, but at the moment, it requires several steps to do.



-- 
https://bugs.ruby-lang.org/