Frage

Wenn ich laufe diese Datei als "ruby x.rb":

class X
end
x = X.new

Was ist das, was "X.new"?

ruft

Ist es ein Objekt / Prozess / etc?

War es hilfreich?

Lösung

Alles in Ruby tritt im Zusammenhang mit einem Gegenstand. Das Objekt auf der obersten Ebene ist „main“ genannt. Es ist im Grunde eine Instanz von Object mit der besonderen Eigenschaft, dass alle Methoden dort definiert werden als Instanzmethoden von Object hinzugefügt (so dass sie überall verfügbar).

So wir ein Skript kann ganz bestehend aus:

puts object_id
@a = 'Look, I have instance variables!'
puts @a

, und es wird „105640“ und druckt „Schau mal, ich habe Instanzvariablen“.

Es ist nicht etwas, das man im Allgemeinen brauchen, um sich zu beschäftigen mit, aber es ist da.

Andere Tipps

Der Top-Level-Anrufer ist ein Objekt Haupt, die von der Object-Klasse ist.

Versuchen Sie, dieses Ruby-Programm:

p self
p self.class

Es ist die X-Klasse. Sie Aufruf der Methode „neu“, die also ein Objekt der Klasse X erstellt, wenn Sie diesen Text als Skript ausführen, Rubin:

  • eine neue Klasse X erzeugt, die eine Unterklasse von Object ist, und welche automatisch (als Unterklasse von Object) erbt einige Methoden, von denen new ist.
  • setzt einen Namen x up
  • ruft die Methode new auf dieser neuen Klasse X, eine X-Instanz-Objekt zu schaffen; x ruft einen Verweis auf das Objekt.

Es ist das Ruby-Interpreter läuft die Zeile

x = X.new

Wie bei vielen Skriptsprachen, das Skript von oben nach unten interpretiert wird, anstatt eine Standard-Eintrittspunkt-Methode, die wie die meisten kompilierten Sprachen.

Als Charlie Martin sagte, X.new ist ein Aufruf an den Konstruktor auf der X-Klasse, die ein Objekt vom Typ X zurückgibt, in der Variablen x gespeichert.

Basierend auf Ihrem Titel, ich glaube, Sie für ein bisschen mehr suchen. Ruby hat keine Notwendigkeit für eine Haupt, es führt einen Code in der Reihenfolge, dass sie es sieht. So Abhängigkeiten enthalten sein müssen, bevor sie aufgerufen werden.

So Ihr Haupt ist jeder verfahrens-Stil-Code, der außerhalb einer Klasse oder Moduldefinition geschrieben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top