Rubys Symbolobjekt erklären

Was ist ein Symbolobjekt?

Ein Symbol ist ein Objekt, das eine Eins-zu-Eins-Entsprechung mit einer beliebigen Zeichenfolge aufweist. von offiziellen

Wie unterscheidet es sich von einer Zeichenkette?

Erstellen Sie zunächst ein Symbolobjekt, indem Sie der Zeichenfolge einen Doppelpunkt ":" voranstellen.

irb(main):001:0> :name
=> :name
irb(main):002:0> :name.class
=> Symbol

Auf den ersten Blick sieht es aus wie eine Zeichenfolge, aber Ruby behandelt das Symbolobjekt als ** Ganzzahl **. Dies ist eine vollständig interne Geschichte, aber im Gegensatz zu Zeichenfolgen wird das Symbol als Ganzzahl verarbeitet, sodass es mit hoher Geschwindigkeit verarbeitet wird.

Was ist gut für Symbol?

Zum Beispiel, wenn Sie eine Zeichenfolge mit demselben Inhalt generieren Das String-Objekt erstellt ein weiteres Objekt, auch wenn der Inhalt identisch ist. Symbolobjekte zeigen auf dasselbe Objekt, wodurch Speicherplatz gespart wird.

Schauen wir uns ein Beispiel mit String an.

irb(main):014:0> string1 = 'String'
=> "String"
irb(main):015:0> string1.object_id
=> 180
irb(main):016:0> string2 = 'String'
=> "String"
irb(main):017:0> string2.object_id
=> 200

Wenn Sie die Objekt-ID als Entität betrachten, verweisen sie auf verschiedene Dinge.

Wenn der Inhalt im Symbol dasselbe Objekt ist, zeigt er auf dieselbe Objekt-ID. Mit anderen Worten, es weist auf dasselbe wie eine Entität hin.

irb(main):021:0> symbol1 = :String
irb(main):021:0> symbol1 = :String
=> :String
irb(main):022:0> symbol1.object_id
=> 91428
irb(main):023:0> symbol2 = :String
=> :String
irb(main):024:0> symbol2.object_id
=> 91428

Selbst wenn ein neues Symbolobjekt erstellt wird, wird gemäß dieser Spezifikation nur ein Objekt erstellt. Dadurch kann der Speicherverbrauch reduziert werden.

Verwendung des Symbols

Das Symbol wird häufig als Schlüssel für Hash-Objekte verwendet. (Hash: Objekt, das die Schlüssel / Wert-Kombination enthält)

irb(main):025:0> { name: 'Masuyama', age: 29 }
=> {:name=>"Masuyama", :age=>29}

Das obige Hash-Beispiel hat den Wert Masuyama für den Schlüssel mit dem Namen und Sie können Daten mit einem Wert von 29 für einen Altersschlüssel darstellen.

In Ruby wird häufig die Notation angezeigt, der Schlüsselzeichenfolge einen Doppelpunkt ":" hinzuzufügen. Der Schlüssel wird zu diesem Zeitpunkt als Symbol behandelt.

Es ist leicht zu verstehen, wenn Sie sich den Spaltennamen der Datenbank vorstellen. Da der Schlüssel selbst aus verschiedenen Daten referenziert wird Es ist effizienter, dasselbe Objekt zu verwenden, als jedes Mal, wenn Daten erstellt werden, ein neues zu erstellen. Aus diesem Grund wird das Symbolobjekt häufig als Hash-Schlüssel verwendet.

Recommended Posts

Rubys Symbolobjekt erklären
Erklären von Ruby Hash-Objekten
Erklären von Rubys Enumerator-Objekt