Pourquoi une erreur est survenue dans l'exemple suivant?Pourquoi j'obtiens une erreur en essayant de référencer une classe imbriquée dans Ruby?
class ClassA
class ClassB
end
class ClassC
def test
ClassB.new
end
end
end
p ClassA::ClassC.new.test # => #<ClassA::ClassB:0x0000010103f860>
class ClassA
class ClassD
def test
ClassB.new
end
end
end
p ClassA::ClassD.new.test # => #<ClassA::ClassB:0x0000010103f010>
class ClassA::ClassE
def test
ClassB.new
end
end
p ClassA::ClassE.new.test # => NameError: uninitialized constant ClassA::ClassE::ClassB
Y at-il une autre façon de créer ClassE
, pas en tapant class ClassA; class ClassE
?
Existe-t-il un moyen d'obtenir le chemin de l'espace de noms? Quelque chose comme '[: ClassA,: ClassE]'? – Andrei
Bonne question. Je ne pense pas que la langue nous donne accès à cela. –
Il existe une solution de contournement - regardez ma réponse ci-dessous. – Andrei