ruby – `Module#singleton_class`的逆

前端之家收集整理的这篇文章主要介绍了ruby – `Module#singleton_class`的逆前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Module#singleton_class的反转是什么?即,给定一个单例类,我怎样才能得到它是单例的模块?

解决方法

您可以使用 ObjectSpace#each_object
module M; end
sc = M.singleton_class

ObjectSpace.each_object(Module).find { |m| m.singleton_class == sc }
  #=> M

编辑:@ndn指出:

ObjectSpace.each_object(sc).to_a #=> [M]

所以它只是:

ObjectSpace.each_object(sc).first #=> M
原文链接:https://www.f2er.com/ruby/271397.html

猜你在找的Ruby相关文章