在继承进程时获取匿名类的名称

Dmi*_*kin 1 ruby metaprogramming class

是否有可能获得name继承的匿名类,而不是提出"失败的A"?应该通过Class对象创建(没有评估或类似).

class A
  def self.inherited(base)
    raise 'fail A' unless base.name
  end
end

B = Class.new(A)
# or
Object.const_set :B, Class.new(A)
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,因为匿名类尚未初始化,因此无法将其设置为特定的常量.

And*_*all 5

没有.

匿名类在被分配给常量(例如(B = Class.new).name #=> "B")之前没有名称.由于在创建类实例之后(在inherited调用hooks- includes -are 期间)才会进行赋值,因此直到之后才能获得该名称.