访问动态类名ruby

时间:2014-12-03 03:35:54

标签: ruby

class_name = "TestClass"
Object.const_set class_name,Class.new{
    include MOduleX
}

#module_x.rb
module ModuleX
    def ModuleX.included (klass)
         p klass.name #=> nil
    end
end

我需要在模块中访问类的名称(" TestClass"在这种情况下),我该怎么办?

2 个答案:

答案 0 :(得分:2)

你不能const_setClass.new之后发生。在包含ModuleX的地方(MOduleX,我认为,这是一个错字),该课程确实无名。

甚至没有提到常量不能被称为test,因为Ruby语法要求常量必须以大写字母开头。

但是,如果你的模块必须在包含时知道类名,那么它可能做错了。我建议重新思考和重构。

答案 1 :(得分:1)