可能重复:
在Ruby中查找类的所有后代
所以,让我们说我们有:
class LivingBeing
class Animal
end
class Bacteria
end
class Virus
end
end
class Fungi < LivingBeing
end
Run Code Online (Sandbox Code Playgroud)
如何检查子类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]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这个问题有一个答案:
http://dzone.com/snippets/objectsubclasses
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |