Issue #8035 has been reported by marcandre (Marc-Andre Lafortune). ---------------------------------------- Feature #8035: singleton class should be included in ancestors https://bugs.ruby-lang.org/issues/8035 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: current: 2.1.0 I feel it would be consistent if: k.ancestors.include?(k) #=> always true if k.is_a?(Class) This is currently the case except for singleton classes: class << ""; include Enumerable; end.ancestors # => [Enumerable, String, Comparable, Object, Kernel, BasicObject] # would be more consistent: # => [#<Class:#<String:0x0000010113d268>>, Enumerable, String, Comparable, Object, Kernel, BasicObject] Note that the singleton classes do appear in the ancestors if a module is instead prepended: class << ""; prepend Enumerable; end.ancestors # => [Enumerable, #<Class:#<String:0x0000010113d268>>, String, Comparable, Object, Kernel, BasicObject] Thanks
on 2013-03-06 17:52
on 2013-03-06 20:22
Issue #8035 has been updated by alexeymuranov (Alexey Muranov). Singleton class it the same thing as metaclass, right? I feel it would be better to keep it invisible, and maybe in the future to remove it completely and to allow objects to keep their singleton methods themselves. ---------------------------------------- Feature #8035: singleton class should be included in ancestors https://bugs.ruby-lang.org/issues/8035#change-37333 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: current: 2.1.0 I feel it would be consistent if: k.ancestors.include?(k) #=> always true if k.is_a?(Class) This is currently the case except for singleton classes: class << ""; include Enumerable; end.ancestors # => [Enumerable, String, Comparable, Object, Kernel, BasicObject] # would be more consistent: # => [#<Class:#<String:0x0000010113d268>>, Enumerable, String, Comparable, Object, Kernel, BasicObject] Note that the singleton classes do appear in the ancestors if a module is instead prepended: class << ""; prepend Enumerable; end.ancestors # => [Enumerable, #<Class:#<String:0x0000010113d268>>, String, Comparable, Object, Kernel, BasicObject] Thanks
on 2013-03-07 14:21
Issue #8035 has been updated by matz (Yukihiro Matsumoto). Agreed. I will accept it unless any other compatibility problem raises. Matz. ---------------------------------------- Feature #8035: singleton class should be included in ancestors https://bugs.ruby-lang.org/issues/8035#change-37358 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: current: 2.1.0 I feel it would be consistent if: k.ancestors.include?(k) #=> always true if k.is_a?(Class) This is currently the case except for singleton classes: class << ""; include Enumerable; end.ancestors # => [Enumerable, String, Comparable, Object, Kernel, BasicObject] # would be more consistent: # => [#<Class:#<String:0x0000010113d268>>, Enumerable, String, Comparable, Object, Kernel, BasicObject] Note that the singleton classes do appear in the ancestors if a module is instead prepended: class << ""; prepend Enumerable; end.ancestors # => [Enumerable, #<Class:#<String:0x0000010113d268>>, String, Comparable, Object, Kernel, BasicObject] Thanks
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.