From: "Dan0042 (Daniel DeLorme)" <noreply@...>
Date: 2022-09-23T13:19:31+00:00
Subject: [ruby-core:110046] [Ruby master Feature#12084] `Class#instance`

Issue #12084 has been updated by Dan0042 (Daniel DeLorme).


I think it would be nicer if `#attached_object` returns nil instead of raising an error. Since nil can't be a valid return value anyway. So you don't need to check for `#singleton_class?` if you want to avoid the cost of Exceptions.

Find all singleton objects:
`ObjectSpace.each_object(Class).filter_map{ |c| c.attached_object rescue nil } `
vs
`ObjectSpace.each_object(Class).filter_map{ |c| c.attached_object if klass.singleton_class? } `
vs
`ObjectSpace.each_object(Class).filter_map(&:attached_object)`


----------------------------------------
Feature #12084: `Class#instance`
https://bugs.ruby-lang.org/issues/12084#change-99296

* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
----------------------------------------
For meta-programming/debugging purposes, I would like to request the inverse of `Object#singleton_class`. Namely, a method that is called on a class that is a singleton class, and returns the object it is a singleton of. Since the `Singleton` module in the standard library http://ruby-doc.org/stdlib-2.3.0/libdoc/singleton/rdoc/Singleton.html assigns the method name `instance` to such classes, I think `Class#instance` should be the name for such feature.

~~~RUBY
Array.singleton_class.instance # => Array
"foo".singleton_class.instance # => "foo"
~~~

When the receiver is a class but is not a singleton class, then it should raise an error.

~~~RUBY
Array.instance # => error
~~~



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