W poniższym przypadku testowego:W jaki sposób Ruby obsługuje dziedziczenie klas zagnieżdżonych?
class Package
class Component
def initialize
p [:initialize,self]
end
end
end
class Package_A < Package
end
class Package_B < Package
end
# Why are the following components of type Package and not Package_A and Package_B
component=Package_A::Component.new
p component
component=Package_B::Component.new
p component
Wyniki w:
[:initialize, #<Package::Component_1:0x2c0a8f8>]
#<Package::Component:0x2c0a8f8>
[:initialize, #<Package::Component_1:0x2c0a5b0>]
#<Package::Component:0x2c0a
Jak uzyskać konkretną Package_A.component i Package_B.component?
Dzięki @Sorrow dla powyższego przykładu ... Użyłem go do rozwiązania mojego problemu z aplikacją. Być może ktoś będzie próbował wesprzeć ** inheritable_nested_class Class1, Class2 ... ** np inheritable_nested_class Komponentu skutkowałoby to w powyższym boilerplate są automatycznie generowane w podklas dziedziczących z klasy ze wspomnianą dyrektywą. Byłoby to przyjemne zadanie w zaawansowanej klasie metaprogramowania :-) – DMisener