Ich habe mich gerade für eine Weile festgefahren. Nehmen Sie diese Basis:Warum findet Ruby keine Klassen in einem höheren Bereich, wenn das Modul mit ::?
module Top
class Test
end
module Foo
end
end
Später, ich kann Klassen innerhalb Foo
definieren, die Test
, indem Sie diese erweitert:
module Top
module Foo
class SomeTest < Test
end
end
end
Allerdings, wenn ich versuchen Vertiefung zu minimieren, indem ::
Verwendung des Moduls angeben:
module Top::Foo
class Failure < Test
end
end
Dies scheitert mit:
NameError: uninitialized constant Top::Foo::Test
Ist dies ein Fehler oder ist es nur eine logische Konsequenz der Art und Weise, wie Ruby Variablennamen auflöst?
Klingt wie ein Fehler zu mir: P Aber sehr informative Antwort, danke – Hubro
Ich würde sagen, halte ich es für einen Fehler, hat jemand einen Fehlerbericht in Ruby dazu gefunden? Ich möchte gerne zur Diskussion beitragen und schauen, was daran beteiligt wäre. –
Hinweis: Es wurde ein Link gefunden, der besagt, dass es beabsichtigt ist [hier] (https://bugs.ruby-lang.org/issues/11705) –