Le costanti vengono esaminate prima nei moduli che contengono lessicalmente e quindi nella catena di ereditarietà.
module Foo
module Bar
module Baz
class Qux
def self.qux_method
Baz.baz_method
end
end
def self.baz_method
end
end
end
end
Questo funzionerà, perché la costante Baz
saranno prima cercate nel modulo lessicale allegando (classe) Qux
, dove non viene trovato. La ricerca continua nel modulo lessicale Baz
, dove non è stato trovato. Pertanto, verrà successivamente esaminato nel modulo che include lessicamente Bar
, dove è stato trovato e e la ricerca si interrompe.
Nota: si scrive nel titolo:
Rubino, genitore di accesso/fratelli metodi modulo
Questo è sbagliato. Questi moduli non sono né genitori né fratelli. Non c'è eredità qui. Esiste, infatti, no rapporto tra i moduli su tutti. C'è solo una relazione tra le costanti e i moduli: le costanti appartengono ai moduli.
Il modulo dichiarazioni sono annidati lessicale, ma i moduli stessi non sono.
fonte
2016-01-07 21:20:13
Questo è l'intero scopo del namespace. – archana