[ruby-core:95675] [Ruby master Feature#16146] Array .difference allow custom comparison
From:
jonathan@...
Date:
2019-11-04 19:25:30 UTC
List:
ruby-core #95675
Issue #16146 has been updated by jonathanhefner (Jonathan Hefner).
duerst (Martin Dst) wrote:
> Well, that assumes that the block return values can be ordered. But it's easy to create cases where values can be compared for equality, but not ordered. Example: `[1, 'abc']`.
I'm not sure that I follow. Here is a naive implementation of what I was envisioning:
```ruby
def difference(*other_arrays, &block)
if block
rejected = other_arrays.flatten(1).map(&block).to_set
self.reject{|element| rejected.include?(block.call(element)) }
else
# original implementation
end
end
```
> Also, this proposal is about adding a block to `difference`, but if we do that, we should add it to `union` and `intersection` and so on, too.
Agreed, that would probably be best for consistency.
----------------------------------------
Feature #16146: Array .difference allow custom comparison
https://bugs.ruby-lang.org/issues/16146#change-82462
* Author: ngomez (Nancy Gomez)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Hello!
I wanted to know if there's any plan to implement the ability to define comparison between individual items in arrays.
Here is where I originally asked the question on Stack Overflow: https://stackoverflow.com/questions/57316775/is-there-any-way-to-specify-how-to-compare-of-array-of-objects-for-difference-f
But specifically, I noticed nearly all the existing Array functions allow us to define ways for comparison, such as #uniq but #difference does not :( This is quite unfortunate but I'm hoping it's just because this function was introduced in 2.6.0, and hopefully this feature can be implemented?
Thanks for any and all info :)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>