4 Stimmen

Woher kennt eine in einem Modul definierte Klasse in Ruby die Konstanten des Moduls?

Ich versuche zu verstehen, wie eine in einem Modul definierte Klasse die Konstanten des Moduls kennt. Hier ist ein Beispiel für das, was ich meine:

module Car
  class Wheel
  end

  class Seat
    p Wheel        # Car::Wheel
  end
end

Ich weiß, es ist offensichtlich, aber da Wheel nirgendwo in der Seat-Hierarchie zu finden ist, verstehe ich nicht, wie es Zugang dazu haben kann.

6voto

Chris Heald Punkte 59198

Wenn Sie eine Klassenkonstante referenzieren, sucht Ruby zuerst im gleichen Modul und dann im Root, wenn sie dort nicht gefunden wird.

Da also beide Seat y Wheel sind in der Car Modul, wenn Sie nach Wheel sucht es zunächst nach Car::Wheel und dann für ::Wheel . Seit Car::Wheel existiert, erhalten Sie diesen Hinweis.

1voto

Phrogz Punkte 283167

Sie suchen nach Informationen über Ruby's Konstante Suche Regeln. Die Details dazu haben sich in Ruby 1.9 geändert und wurden in Ruby 1.9.2 erneut geändert. Sie können lesen eine Diskussion darüber auf der ruby-core Mailingliste.

Hier gibt es einen ausgezeichneten Überblick über einige der Unterschiede zwischen Ruby 1.8.x, Ruby 1.9 und Ruby 1.9.2: http://jfire.posterous.com/constant-lookup-in-ruby

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X