反向`Module#singleton_class`

saw*_*awa 1 ruby singleton class

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

Car*_*and 6

您可以使用ObjectSpace#each_object:

module M; end
sc = M.singleton_class

ObjectSpace.each_object(Module).find { |m| m.singleton_class == sc }
  #=> M
Run Code Online (Sandbox Code Playgroud)

编辑:@ndn指出:

ObjectSpace.each_object(sc).to_a #=> [M]
Run Code Online (Sandbox Code Playgroud)

所以它只是:

ObjectSpace.each_object(sc).first #=> M
Run Code Online (Sandbox Code Playgroud)