Sono rimasto bloccato su questo per un po '. Prendete questa base:Perché Ruby non trova le classi in uno scope più elevato quando il modulo viene specificato usando ::?
module Top
class Test
end
module Foo
end
end
Più tardi, posso definire le classi all'interno Foo
che si estende Test
in questo modo:
module Top
module Foo
class SomeTest < Test
end
end
end
Tuttavia, se cerco di ridurre al minimo il rientro utilizzando ::
per specificare il modulo:
module Top::Foo
class Failure < Test
end
end
questo viene a mancare con:
NameError: uninitialized constant Top::Foo::Test
Si tratta di un bug o è solo una conseguenza logica del modo in cui Ruby risolve i nomi delle variabili?
suona come un bug a me: P Ma la risposta molto informativo, grazie – Hubro
direi Lo considero un bug, qualcuno ha trovato un bug report in Ruby su questo? Mi piacerebbe contribuire alla discussione e dare un'occhiata a cosa sarebbe coinvolto nel risolvere questo problema. –
Nota: trovato un link che indica che è intenzionale [qui] (https://bugs.ruby-lang.org/issues/11705) –