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"在这种情况下),我该怎么办?
答案 0 :(得分:2)
你不能const_set
在Class.new
之后发生。在包含ModuleX
的地方(MOduleX
,我认为,这是一个错字),该课程确实无名。
甚至没有提到常量不能被称为test
,因为Ruby语法要求常量必须以大写字母开头。
但是,如果你的模块必须在包含时知道类名,那么它可能做错了。我建议重新思考和重构。
答案 1 :(得分:1)