代码之家  ›  专栏  ›  技术社区  ›  amarsuperstar

Ruby枚举

  •  6
  • amarsuperstar  · 技术社区  · 15 年前

    Command class << [Subtype] 部分。我已经试着读过了,但我觉得还是有一些红宝石魔术我错过了。有人能给我解释一下吗:-)

    ObjectSpace.enum_for(:each_object, class << Command; self; end).to_a()
    
    1 回复  |  直到 15 年前
        1
  •  5
  •   sepp2k    13 年前

    class << Command; self; end 返回的单例类 Command

    在ruby中,C的子类的singleton类是C的singleton类的子类。所以Command的所有子类都有从Command的singleton类继承的singleton类。

    ObjectSpace.each_object(C) 迭代作为类实例的所有对象 C ObjectSpace.each_object(singleton_class_of_command) 您可以迭代命令及其所有子类。

    enum_for each_object 迭代,这样就可以用 to_a .

    推荐文章