Symbols als Hash-Schlüssel
Teil des Abschnitts Grundlagen der Ruby-Journey von Coddy — Lektion 78 von 88.
Bisher haben Sie Strings als Hash-Keys mit der Hash-Rocket-Syntax verwendet. Ruby-Entwickler verwenden jedoch üblicherweise stattdessen Symbols als Keys, was einen saubereren und effizienteren Ansatz bietet.
Erinnern Sie sich an Symbols von früher? Sie sind leichtgewichtige, unveränderliche Bezeichner, die mit einem Doppelpunkt beginnen. Wenn Symbole als Schlüssel verwendet werden, bietet Ruby eine spezielle Kurzschreibweise an:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # Ausgabe: {:name=>"Alice", :age=>25, :city=>"Paris"}Beachten Sie, wie name: das :name => ersetzt. Diese Kurzschreibweise funktioniert nur, wenn der Schlüssel ein Symbol ist. Um auf Werte zuzugreifen, verwenden Sie das Symbol mit eckigen Klammern:
person = {name: "Alice", age: 25}
puts person[:name] # Ausgabe: Alice
puts person[:age] # Ausgabe: 25Das Hinzufügen und Ändern von Einträgen funktioniert auf dieselbe Weise:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # Ausgabe: {:name=>"Bob", :city=>"Paris"}Symbole werden als Hash-Keys bevorzugt, da sie schneller zu vergleichen sind als Strings und weniger Speicher verbrauchen. Sie werden dieses Muster im gesamten Ruby-Code sehen, daher lohnt es sich, sich damit vertraut zu machen.
Aufgabe
EinfachLies drei Zeilen Eingabe ein:
- Eine Automarke (String)
- Ein Modellname (String)
- Ein Jahr (Integer)
Erstelle einen Hash namens car unter Verwendung der Symbol-Kurzschreibweise (z. B. key: value) mit den folgenden Schlüssel-Wert-Paaren:
:brandabgebildet auf die Automarke:modelabgebildet auf den Modellnamen:yearabgebildet auf das Jahr (als Integer)
Führe dann diese Operationen aus:
- Gib den Wert des Schlüssels
:modelaus - Füge einen neuen Schlüssel
:colormit dem Wert"black"hinzu - Aktualisiere den Schlüssel
:year, indem du 1 zu seinem aktuellen Wert addierst - Gib den finalen Hash aus
Wenn die Eingaben beispielsweise Toyota, Camry und 2020 sind, sollte die Ausgabe wie folgt aussehen:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}Wenn die Eingaben Honda, Civic und 2018 sind, sollte die Ausgabe wie folgt aussehen:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}Wenn die Eingaben Ford, Mustang und 2023 sind, sollte die Ausgabe wie folgt aussehen:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}Spickzettel
Ruby bietet eine Kurzschreibweise zum Erstellen von Hashes mit Symbol-Schlüsseln:
person = {name: "Alice", age: 25, city: "Paris"}Dies entspricht der Verwendung der Hash-Rocket-Syntax mit Symbolen:
person = {:name => "Alice", :age => 25, :city => "Paris"}Um auf Werte aus einem Hash mit Symbol-Schlüsseln zuzugreifen, verwenden Sie eckige Klammern mit dem Symbol:
puts person[:name] # Ausgabe: Alice
puts person[:age] # Ausgabe: 25Das Hinzufügen und Ändern von Einträgen funktioniert genauso wie bei String-Schlüsseln:
person[:city] = "Paris" # Neues Schlüssel-Wert-Paar hinzufügen
person[:name] = "Bob" # Bestehenden Wert ändernSymbole werden als Hash-Schlüssel bevorzugt, da sie schneller zu vergleichen sind als Strings und weniger Speicher verbrauchen.
Probier es selbst
# Eingabe lesen
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: Schreibe deinen Code unten
# 1. Erstelle ein Hash namens 'car' unter Verwendung der Symbol-Kurzschreibweise mit den Schlüsseln :brand, :model und :year
# 2. Gib den Wert des Schlüssels :model aus
# 3. Füge einen neuen Schlüssel :color mit dem Wert "black" hinzu
# 4. Aktualisiere den Schlüssel :year, indem du 1 zum aktuellen Wert addierst
# 5. Gib das finale Hash ausDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung – Einfache LogikLogische Operatoren Teil 3Logische Operatoren Teil 47Rechnungs-Splitter
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit Twist
SpielübersichtDie FizzBuzz-Methode13Arrays für Fortgeschrittene
Array Slicing mit BereichenArray Slicing mit IndizesArray-OperatorenInclude? Methode2Variablen und Datentypen
Zahlen und VariablenDatentyp StringDatentyp BooleanDatentyp SymbolDatentypen prüfenBenennungskonventionenZusammenfassung – Erstellung von Variablen5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachtelte If - Else-AnweisungenUnless-Anweisung8Schleifen
For-Schleife mit RangesWhile-SchleifeBreakNextRückblick - FakultätTimes-SchleifeUntil-SchleifeVerschachtelte SchleifenRückblick - Dynamische Eingabe11Arrays
Arrays erstellenZugriff auf Array-ElementeArrays modifizierenArray-MethodenWiederholung – Produkt-ArrayWiederholung – Umgekehrtes ArrayArray-Shortcuts14Hashes
Hashes erstellenZugriff auf Hash-ElementeHashes ändernHash-MethodenRückblick – Produkt-HashSymbols als Hash-Schlüssel3Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenWiederholung – Einfache MathematikVergleichsoperatoren6Grundlagen Ein- und Ausgabe
Ausgabe mit putsAusgabe mit print und pAusgabe mit VariablenEingabe mit getsChomp-MethodeTypumwandlungWiederholung - AltersrechnerWiederholung - Wahr oder Falsch