[ruby-core:122682] [Ruby Bug#21375] Set[] does not call #initialize
From:
"knu (Akinori MUSHA) via ruby-core" <ruby-core@...>
Date:
2025-07-08 15:10:31 UTC
List:
ruby-core #122682
Issue #21375 has been updated by knu (Akinori MUSHA).
I'm leaning toward making Set subclass-friendly again. That's how I've always wanted Set to be (unlike Array and Hash), and the feedback shows that there are real users and use cases that share and rely on this concept, so we shouldn't easily compromise that core value.
https://bugs.ruby-lang.org/issues/21396#note-8
----------------------------------------
Bug #21375: Set[] does not call #initialize
https://bugs.ruby-lang.org/issues/21375#change-113962
* Author: Ethan (Ethan -)
* Status: Open
* ruby -v: ruby 3.5.0dev (2025-05-26T17:42:35Z master 909a0daab6) +PRISM [x86_64-darwin22]
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
I have a subclass of Set that overrides #initialize. Following #21216, .new does call #initialize but .[] does not.
```ruby
class MySet < Set
def initialize(enum = nil)
compare_by_identity
super
end
end
MySet.new.compare_by_identity?
# => true
MySet[].compare_by_identity?
# => false
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/