ruby - 如何查看某个类下或使用的所有类?

标签 ruby

<分区>

Possible Duplicate:
Look up all descendants of a class in Ruby

那么,假设我们有:

class LivingBeing
  class Animal
  end

  class Bacteria
  end

  class Virus
  end
end

class Fungi < LivingBeing
end

如何检查 LivingBeing 有哪些子类?我知道我们有 Klass.ancestors,但是查看祖先对立面的方法是什么?

最佳答案

核心 Ruby 语言中没有内置任何东西可以满足您的需求 - 您需要自己编写。这是一个示例方法 subclasses_of(class_name_here)(如下),它将为您返回特定类的子类列表:

class Mammal
end

class Human < Mammal
end

class Dog < Mammal
end

def subclasses_of input
  ObjectSpace.each_object(Class).select { |klass| klass < input }
end

subclasses_of(Mammal)
 #=> [Human, Dog]

顺便说一句,这里有这个问题的答案:

http://dzone.com/snippets/objectsubclasses

关于ruby - 如何查看某个类下或使用的所有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944268/

相关文章:

ruby-on-rails - 如何修复 bundler 在 docker 容器中找不到 Rails

json - 在 ruby​​ 中创建嵌套哈希并将其保存到 JSON 中

ruby-on-rails - Ruby:我可以在类方法中使用实例方法吗?

php - 是否可以像 PHP 一样混合 Ruby 代码和 HTML?

ruby - 当我尝试时,书中的 Metaprogramming Ruby 2 示例不起作用。故障排除协助

ruby-on-rails - Mailchimp "invalid_grant"错误

ruby-on-rails - Rails 3 在一个查询中包含多个表

ruby - 比 ruby 少一倍

ruby - 用于匹配尾部斜线或第一个问号之前的所有内容的正则表达式?

ruby - 在特定范围内评估 block 并传递参数