ruby - Inverso de `Module#singleton_class`
(1)
¿Cuál es el inverso del Module#singleton_class
? Es decir, dada una clase singleton, ¿cómo puedo obtener el módulo del que es singleton?
Puede usar ObjectSpace # each_object para eso:
module M; end
sc = M.singleton_class
ObjectSpace.each_object(Module).find { |m| m.singleton_class == sc }
#=> M
Editar: @ndn ha señalado que:
ObjectSpace.each_object(sc).to_a #=> [M]
entonces es solo:
ObjectSpace.each_object(sc).first #=> M