从一个类中定义的模块的Ruby名称

时间:2012-01-24 16:26:20

标签: ruby

我有像这样的红宝石代码:

module Hello

  class Hi

    def initialize()
      puts self.module.name //Should print "Hello"
    end

  end
end

如何获取该类所包含的模块的名称? 感谢

1 个答案:

答案 0 :(得分:3)

您可以使用Module::nesting方法执行此操作:

  

嵌套→数组

     

返回嵌套在调用点的模块列表。

module M
  class C
    Module.nesting[1] # => M
  end
end

如果要从实例方法中获取此值,可以将其分配给类变量:

module Hello    
  class Hi
    @@parent = Module.nesting[1]

    def initialize()
      puts @@parent # => Hello
    end
  end
end