5

重複の可能性:
Rubyでクラスのすべての子孫を検索します

だから、私たちが持っているとしましょう:

class LivingBeing
  class Animal
  end

  class Bacteria
  end

  class Virus
  end
end

class Fungi < LivingBeing
end

サブクラスが何であるかを確認するにはどうすればよいLivingBeingですか?私たちが持っていることは知っていますKlass.ancestorsが、祖先の反対を見る方法は何ですか?

4

1 に答える 1

3

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

于 2012-10-17T22:22:54.797 に答える