我想在其超类的MySuperclass
'self.inherited
方法中访问类的名称。它适用于class Foo < MySuperclass; end
定义的具体类,但在使用匿名类时会失败。我倾向于避免在测试中创建(类)常量;我希望它能与匿名类一起工作。访问超类中匿名类的名字'self.inherited
鉴于以下代码:
class MySuperclass
def self.inherited(subclass)
super
# work with subclass' name
end
end
klass = Class.new(MySuperclass) do
def self.name
'FooBar'
end
end
klass#name
仍会nil
当MySuperclass.inherited
称为那将是之前Class.new
收率到其块并定义它的方法。
我知道一个类获取它的name
时,它被分配给一个常量,但有没有办法设置Class#name
“早”没有创建一个常量?
我准备了更多的verbose code example未通过测试,以说明预期。
你有没有设法解决这个问题? –
由Малъ-Скрылевъ(接受的答案)提供的代码实现了我想要完成的任务。我曾希望使用'继承的'回调来完成它,但唉,似乎不可能。 – carp