Command class << [Subtype] 部分。我已经试着读过了,但我觉得还是有一些红宝石魔术我错过了。有人能给我解释一下吗:-)
Command
class << [Subtype]
ObjectSpace.enum_for(:each_object, class << Command; self; end).to_a()
class << Command; self; end 返回的单例类 Command
class << Command; self; end
在ruby中,C的子类的singleton类是C的singleton类的子类。所以Command的所有子类都有从Command的singleton类继承的singleton类。
ObjectSpace.each_object(C) 迭代作为类实例的所有对象 C ObjectSpace.each_object(singleton_class_of_command) 您可以迭代命令及其所有子类。
ObjectSpace.each_object(C)
C
ObjectSpace.each_object(singleton_class_of_command)
enum_for each_object 迭代,这样就可以用 to_a .
enum_for
each_object
to_a