Articles

RubyLearning.com

<Bereiche | Inhaltsverzeichnis | Hashes>

Ein Symbol sieht aus wie ein Variablenname, dem jedoch ein Doppelpunkt vorangestellt ist. Beispiele – :action, :line_items. Sie müssen ein Symbol nicht vorab deklarieren und es ist garantiert einzigartig. Sie müssen einem Symbol keinen Wert zuweisen – Ruby erledigt das für Sie. Ruby garantiert auch, dass ein bestimmtes Symbol unabhängig davon, wo es in Ihrem Programm angezeigt wird, denselben Wert hat.

Alternativ können Sie den Doppelpunkt als „Ding namens“ betrachten, also :id ist „das Ding namens id.“ Sie können sich auch vorstellen: id bedeutet den Namen der Variablen-ID und plain id den Wert der Variablen.

Ein Symbol ist das grundlegendste Ruby-Objekt, das Sie erstellen können. Es ist nur ein Name und eine interne ID. Symbole sind nützlich, da ein bestimmter Symbolname in einem Ruby-Programm auf dasselbe Objekt verweist. Symbole sind effizienter als Zeichenfolgen. Zwei Zeichenfolgen mit demselben Inhalt sind zwei verschiedene Objekte, aber für einen bestimmten Namen gibt es nur ein Symbolobjekt. Dies kann sowohl Zeit als auch Speicher sparen.

Siehe das Beispiel: p039symbol.rb unten

Die Ausgabe, als ich das Programm auf meinem PC ausführte, war:

Wann verwenden wir also eine Zeichenfolge im Vergleich zu einem Symbol?

  • Wenn der Inhalt (die Zeichenfolge) des Objekts wichtig ist, verwenden Sie eine Zeichenfolge
  • Wenn die Identität des Objekts wichtig ist, verwenden Sie ein Symbol

Ruby verwendet Symbole und verwaltet eine Symboltabelle, um sie zu speichern. Symbole sind Namen – Namen von Instanzvariablen, Namen von Methoden, Namen von Klassen. Wenn es also eine Methode namens control_movie gibt, gibt es automatisch ein Symbol:control_movie . Ruby wird interpretiert, sodass die Symboltabelle jederzeit griffbereit bleibt. Sie können jederzeit herausfinden, was sich darauf befindet, indem Sie Symbol aufrufen.alle Symbole.
Ein Symbol-Objekt wird erstellt, indem ein Operator, String, Variable, Konstante, Methode, Klasse, Modulname mit einem Doppelpunkt vorangestellt wird. Das Symbolobjekt ist für jeden anderen Namen eindeutig, bezieht sich jedoch für die Dauer der Ausführung eines Programms nicht auf eine bestimmte Instanz des Namens. Wenn Fred also in einem Kontext eine Konstante, in einem anderen eine Methode und in einem dritten eine Klasse ist, ist das Symbol :Fred in allen drei Kontexten dasselbe Objekt.

Dies kann durch dieses einfache Programm veranschaulicht werden – p039xsymbol.rb:

Die Ausgabe, als ich das Programm auf meinem PC ausführte, war:

Hier ist ein weiteres Beispiel – p039xysymbol.rb:

Die Ausgabe lautet:

In diesem Beispiel ist :yes ein Symbol. Symbole enthalten keine Werte oder Objekte wie Variablen. Stattdessen werden sie als konsistenter Name innerhalb des Codes verwendet. Im vorhergehenden Code könnten Sie beispielsweise das Symbol leicht durch eine Zeichenfolge ersetzen, wie in example – p039xyzsymbol .rb

Dies gibt das gleiche Ergebnis, ist aber nicht so effizient. In diesem Beispiel erzeugt jede Erwähnung von ‚Ja‘ ein neues Objekt, das separat im Speicher gespeichert wird, während Symbole einzelne Referenzwerte sind, die nur einmal initialisiert werden. Im ersten Codebeispiel existiert nur :yes , während im zweiten Beispiel die vollständigen Zeichenfolgen ‚yes‘ und ‚yes‘ Speicher belegen.

Wir können auch einen String in ein Symbol umwandeln und umgekehrt:

Symbole sind besonders nützlich, wenn Sie Hashes erstellen und zwischen Schlüsseln und Werten unterscheiden möchten. Ein praktisches Beispiel finden Sie unter Verwenden von Symbolen als Hash-Schlüssel .

Fabio Akita Ein brasilianischer Rails-Enthusiast, auch online als „AkitaOnRails“ bekannt, schrieb diesen exklusiven Artikel über Ruby-Symbole für die rubylearning.com mitglieder wie Sie. Lesen Sie den Artikel, nachdem Sie diese Lektion durchlaufen haben.

Hinweis: Das Ruby-Logo ist Copyright (c) 2006, Yukihiro Matsumoto. Ich habe umfangreiche Verweise auf Informationen zu Ruby gemacht, die im öffentlichen Bereich verfügbar sind (Wikis und Blogs, Artikel verschiedener Ruby-Gurus), meine Anerkennung und meinen Dank an alle. Ein Großteil des Materials auf rubylearning.com und im Kurs an rubylearning.org wird hauptsächlich aus dem Programming Ruby-Buch gezogen, das im Pragmatic Bookshelf erhältlich ist.

<Bereiche / Inhaltsverzeichnis / Hashes>