当前位置:  开发笔记 > 编程语言 > 正文

反向`Module#singleton_class`

如何解决《反向`Module#singleton_class`》经验,为你挑选了1个好方法。

倒数是Module#singleton_class什么?即,给定一个单例类,我怎样才能使模块成为单例?



1> Cary Swovela..:

您可以使用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

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有