[ruby-core:74501] [Ruby trunk Misc#12210] Add IdentitySet class that compares members by identity

From: duerst@...
Date: 2016-03-24 01:40:14 UTC
List: ruby-core #74501
Issue #12210 has been updated by Martin D端rst.


I think that rather than creating a new class, adding an option on Set.new (e.g. Set.new([a_str, a_str, "b", "b"], compare_by: :identity)) is more Ruby-like. 

----------------------------------------
Misc #12210: Add IdentitySet class that compares members by identity
https://bugs.ruby-lang.org/issues/12210#change-57621

* Author: Tim Perkins
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
This subclass of Set handles a use case that we ran into where we needed to track instances of objects that might compare as equal.

I was surprised that there was not a core way to do this. IdentitySet allows you to do the following (trivial example using strings):

~~~ruby
  a_str = "a"
  s = IdentitySet.new([a_str, a_str, "b", "b"])

  p s # => #<IdentitySet: {"a", "b", "b"}>
~~~

---Files--------------------------------
identity_set.diff (1.18 KB)


-- 
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>

In This Thread

Prev Next