<<Метапрограммирование на Ruby
Лекция 11: Вывод дерева классов.
Напишем метод print_class_tree для вывода на экран дерева классов заданного объекта
class Class
def subclasses
@subclasses ||= []
end
end
ObjectSpace.each_object(Class) do |klass|
if klass.superclass
klass.superclass.subclasses << klass
end
end
def print_class_tree(klass, indent = 0)
puts (" " * indent) + klass.to_s
klass.subclasses.each do |k|
print_class_tree(k, indent + 1)
end
end
Выведем на экран дерево классов для Numeric:
Или, например, для класса Object:
На экране мы увидим иерархию классов в языке Ruby.
--
StanislavSemenov - 04 May 2010