Dlaczego ponowne otwarcie modułu zagnieżdżonego daje różne wyniki w zależności od użytej składni? Na przykład, to działa prawidłowo:Ponownie otwarta anomalia modułu zagnieżdżonego w Ruby
module A
module E
end
end
module A
module E
def E.e
end
end
end
Ale:
module A
module E
end
end
module A::E
def E.e
end
end
daje błąd:
reopen.rb:6:in `<module:E>': uninitialized constant A::E::E (NameError)
from reopen.rb:5:in `<main>'
(Zanim ktoś zwraca na to uwagę, obejście tego problemu jest użycie self
zamiast nazwa modułu podczas definiowania Ee, ale tak naprawdę nie chodzi o to stanowisko.)
O co więc chodzi? –
Punkt targowy - zmieniony. –