ruby class singleton

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