Jeśli masz:Jak znaleźć wszystkie moduły i klasy w module rekursywnie?
module A
class B
end
end
można znaleźć B i podobne zajęcia poprzez A.constants. Jednak w Ruby 1.9.3 nie można uzyskać B, jeśli znajduje się on w innym module. W Ruby 1.8.7 możesz.
module A
module Aa
class B
end
end
end
Jak uzyskać B z pierwszego poziomu A? Chciałbym jako wyjście jest tablicą stałych, które obejmują wszystkie zajęcia, takie jak B, ale w dowolnym miejscu w module A.
Co masz na myśli, że nie możesz uzyskać B? Mogę zrobić A :: Aa :: B.new, działa – megas
Czy 'MyModule.constants.select {| c | Class === MyModule.const_get (c)} 'działa dla ciebie? http://stackoverflow.com/questions/833125/find-classes-available-in-a-module – ScottJShea
Tak, możesz utworzyć instancję bezpośrednio. Ale w jaki sposób zapełnisz tablicę symboli, które wymieniają klasy takie jak B? Scott: to nie zadziała dla Ruby 1.9.3 (dla Rubiego 1.8.7). Stałe nie zawierają modułów z jakiegoś powodu. – Jade