Haftungsausschluss: Code aus den aufgenommenen ruby koansRubin: expliziter Scoping auf einer Klassendefinition
Diese aus einer Diskussion von Konstanten ist innerhalb von Klassen Scoping. Hier ist die Defintion von ein paar wenigen Klassen:
class Animal
LEGS = 4
def legs_in_animal
LEGS
end
end
class MyAnimals
LEGS = 2
class Bird < Animal
def legs_in_bird
LEGS
end
end
end
An dieser Stelle tut MyAnimals::Bird.new.legs_in_bird
Ergebnisse in 2 und ich verstehe, warum - lexikalischen Raum für die Konstante vor der Vererbungshierarchie suchen.
Dann wird diese Klasse definiert:
class MyAnimals::Oyster < Animal
def legs_in_oyster
LEGS
end
end
Das Tutorial sagt nun, dass MyAnimals::Oyster.new.legs_in_oyster
Ergebnisse in 4 Aufruf und ich kann es nicht herausgefunden. Es scheint mir, dass Oyster eine geschachtelte Klasse in MyAnimals ist und ich erwartete, dass sie sich genauso verhält wie die Birds Klasse. Ich vermisse einige wichtige Informationen darüber, was die Klasse Oyster mit expliziten Scoping-Mitteln deklariert.
kann mir jemand das erklären? Ich habe Hunderte von Ruby-Kurs-Tutorials über Google gefunden, aber keine von ihnen adressiert diese Situation.
Vielen Dank im Voraus ...
schreibt jemand Code, der davon abhängen würde, welche Konstante zuerst erreicht würde? –