Po prostu utknąłem w tym przez chwilę. Weź to podstawa:Dlaczego Ruby nie znajduje zajęć w wyższym zakresie, gdy moduł jest określony za pomocą ::?
module Top
class Test
end
module Foo
end
end
Później mogę zdefiniować klasy wewnątrz Foo
który rozciąga Test
w ten sposób:
module Top
module Foo
class SomeTest < Test
end
end
end
Jednakże, jeśli staram się zminimalizować wcięcia za pomocą ::
określić moduł:
module Top::Foo
class Failure < Test
end
end
ten nie powiedzie się z:
NameError: uninitialized constant Top::Foo::Test
Czy jest to błąd, czy jest to tylko logiczna konsekwencja sposobu, w jaki Ruby rozpoznaje nazwy zmiennych?
Brzmi jak bug do mnie: P Ale odpowiedzi bardzo pouczające, dziękuję – Hubro
Powiedziałbym, uważam, że to błąd, czy ktoś znalazł raport o błędzie w Ruby na ten temat? Chciałbym wnieść swój wkład w dyskusję i przyjrzeć się temu, co byłoby związane z naprawieniem tego. –
Uwaga: znaleziono link stwierdzający, że jest celowy [tutaj] (https://bugs.ruby-lang.org/issues/11705) –