From: ruby-core@... Date: 2018-07-02T19:41:26+00:00 Subject: [ruby-core:87757] [Ruby trunk Feature#14887] Array#delete_if does not use #delete Issue #14887 has been updated by marcandre (Marc-Andre Lafortune). Assignee set to matz (Yukihiro Matsumoto) You probably meant "... call #delete_at in the background". I think there could be a performance issue for big arrays if calling `delete_at`. For example `delete_if{true}` would be moving `O(n^2)` elements (for no reason!) while `delete_if` is strictly `O(n)`. Overall, I'm very sceptical about the request. Array could have been built using some kind of `RandomAccess` module with a minimal set of primitives to read, write, add and remove elements, but that's simply not the case. `delete_if` doesn't even call `Array#each` for example, and `Array#each` doesn't call `Array#[]`. I think it's unrealistic at this point to go in that direction. ---------------------------------------- Feature #14887: Array#delete_if does not use #delete https://bugs.ruby-lang.org/issues/14887#change-72781 * Author: sdaubert (Sylvain Daubert) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: ---------------------------------------- When a class inherits from Array, and its #delete methods is modified, #delete_if and #reject! do not call this method. From sources, its an internal C method which is called instead. Is there a way to modify #delete_if and #reject! to use #delete? This would ease inheriting of Array class. -- https://bugs.ruby-lang.org/ Unsubscribe: