Раздел «Язык Ruby».RubyCourseLecture11:
<<Метапрограммирование на 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:

print_class_tree(Numeric)

Или, например, для класса Object:

print_class_tree(Object)

На экране мы увидим иерархию классов в языке Ruby.

Следующая лекция
Предыдущая лекция

-- StanislavSemenov - 04 May 2010