【发布时间】:2010-07-23 00:08:58
【问题描述】:
以下示例失败
class A
class B
end
end
p Object.const_get 'A' # => A
p Object.const_get 'A::B' # => NameError: wrong constant name A::B
更新
关于之前提出的主题的问题:
最后一个gives a nice solution可以进化成
class String
def to_class
self.split('::').inject(Object) do |mod, class_name|
mod.const_get(class_name)
end
end
end
class A
class B
end
end
p "A::B".to_class # => A::B
【问题讨论】:
-
如果我想声明使用
to_class方法并将其值分配给class中的CONSTANT会发生什么情况,例如class A begin MY_CONST = "SomeOtherClass".to_class end?例如,如果在initialize之外调用,我会得到未初始化的常量。class_eval,我可以尝试什么?谢谢!