Vermessungsarbeitscode (in einem Modul namens Surveyor, nicht weniger), der versucht, es zu verstehen. Ich stieß auf diesen Abschnitt, der eine Klasse innerhalb eines Moduls enthält. Ist das das Gleiche wie das Modul? Wenn nicht, was ist der Vorteil, es so zu machen? Vielen Dank. (Bonuspunkte: Warum fügen wir uns selbst zur Klasse hinzu, ist das nicht schon angedeutet?)
%Vor%Was ist der Vorteil, es so zu machen?
Es dient als Namespace so Klassen mit dem gleichen Namen kollidieren nicht (so hat es nichts zu mit Mixins machen). Es ist Standard.
Warum hängen wir uns selbst an die Klasse an, ist das nicht schon angedeutet?
Das ist nur eine der Möglichkeiten, von definierenden Klasse-Methoden (die anderes ist def self.method_name
).
Ist das das Gleiche wie das Modul?
Nein. Wenn Sie module Foo; end
haben und dann tun
Sie erhalten eine Klasse Bar
, die alle Methoden des Moduls Foo
enthält. Aber wenn wir
Wir enden mit einer Klasse Foo::Bar
, die keine der Methoden in Foo
enthält, die nicht in Bar
Was ist der Vorteil, es so zu machen?
Es ermöglicht Ihnen, Ihren Code zu organisieren, wenn es benötigt wird.
Warum hängen wir uns selbst an die Klasse an, ist das nicht schon angedeutet?
Nein, es ist nicht schon "impliziert". Dies entspricht der Definition jeder Methode in diesem Block mit self.
like def self.mymethod; end
. Siehe Klasse & lt; & lt; Selbstsprache in Ruby .
Tags und Links ruby class ruby-on-rails oop