descendants -> [Class, Module]Ruby 4.1 から[permalink][rdoc][edit]-
selfを Module#ancestors に持つクラスやモジュールの配列を返します。selfの子孫を返す点で Module#ancestors の逆演算にあたり、x.descendants.include?(y)が成り立つのはy.ancestors.include?(x)が成り立つときに限られます。ただしself自身、特異クラス、refinement は結果に含まれません。返される配列の順序は不定です。
例selfは返された子孫への参照を保持しないため、参照を持つオブジェクトが無くなった子孫をガベージコレクションから守ることはありません。そのため、ガベージコレクタが実行されたかどうかによって、一度 descendants に含まれていたクラスやモジュールが結果から消えることがあります。module A; end module B; include A; end class C; include B; end class D < C; end p A.descendants # => [B, C, D] p B.descendants # => [C, D] p C.descendants # => [D][SEE_ALSO] Module#ancestors