Hashes ändern
Teil des Abschnitts Grundlagen der Ruby-Journey von Coddy — Lektion 75 von 88.
Hashes sind nach ihrer Erstellung nicht statisch. Sie können neue Schlüssel-Wert-Paare hinzufügen, bestehende Werte aktualisieren und Einträge entfernen, während Ihr Programm läuft.
Um ein neues Paar hinzuzufügen oder einen bestehenden Wert zu aktualisieren, weisen Sie dem Schlüssel mithilfe von eckigen Klammern einen Wert zu:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Fügt ein neues Schlüssel-Wert-Paar hinzu
person["age"] = 26 # Aktualisiert den bestehenden Wert
puts person # Ausgabe: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Wenn der Schlüssel existiert, wird der Wert ersetzt. Wenn er nicht existiert, wird dem Hash ein neues Paar hinzugefügt.
Um ein Schlüssel-Wert-Paar zu entfernen, verwenden Sie die delete-Methode mit dem Schlüssel, den Sie entfernen möchten:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Ausgabe: {"name"=>"Alice", "age"=>25}Die delete-Methode gibt den Wert zurück, der entfernt wurde, was nützlich sein kann, wenn Sie ihn verwenden müssen:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Ausgabe: 25Wenn Sie versuchen, einen Schlüssel zu löschen, der nicht existiert, gibt Ruby einfach nil zurück, ohne einen Fehler auszulösen.
Aufgabe
EinfachLies vier Zeilen Eingabe ein:
- Ein Studentenname (String)
- Eine Anfangsnote (Integer)
- Eine neue Note zum Aktualisieren (Integer)
- Ein neues Schlüssel-Wert-Paar im Format
key:value(z. B.subject:Math)
Erstelle einen Hash namens student mit den folgenden anfänglichen Schlüssel-Wert-Paaren:
"name"zugeordnet dem Studentennamen"grade"zugeordnet der Anfangsnote (als Integer)
Führe dann diese Änderungen durch:
- Aktualisiere den Schlüssel
"grade"mit dem neuen Notenwert - Füge ein neues Schlüssel-Wert-Paar hinzu, indem du den Schlüssel und den Wert aus der vierten Eingabe verwendest (der Wert soll ein String bleiben)
- Lösche den Schlüssel
"name"aus dem Hash und speichere den entfernten Wert
Gib den entfernten Namen in der ersten Zeile aus und gib dann den finalen Hash in der zweiten Zeile aus.
Wenn die Eingaben beispielsweise Alice, 85, 92 und subject:Math sind, sollte die Ausgabe wie folgt aussehen:
Alice
{"grade"=>92, "subject"=>"Math"}Wenn die Eingaben Bob, 70, 75 und status:passing sind, sollte die Ausgabe wie folgt aussehen:
Bob
{"grade"=>75, "status"=>"passing"}Wenn die Eingaben Charlie, 100, 95 und note:excellent sind, sollte die Ausgabe wie folgt aussehen:
Charlie
{"grade"=>95, "note"=>"excellent"}Spickzettel
Um ein neues Schlüssel-Wert-Paar hinzuzufügen oder einen bestehenden Wert in einem Hash zu aktualisieren, verwenden Sie eckige Klammern:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Fügt ein neues Schlüssel-Wert-Paar hinzu
person["age"] = 26 # Aktualisiert den bestehenden Wert
puts person # Outputs: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Wenn der Schlüssel existiert, wird der Wert ersetzt. Wenn er nicht existiert, wird ein neues Paar hinzugefügt.
Um ein Schlüssel-Wert-Paar zu entfernen, verwenden Sie die Methode delete:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Outputs: {"name"=>"Alice", "age"=>25}Die Methode delete gibt den entfernten Wert zurück:
removed_age = person.delete("age")
puts removed_age # Outputs: 25Wenn Sie versuchen, einen Schlüssel zu löschen, der nicht existiert, gibt Ruby nil zurück, ohne einen Fehler auszulösen.
Probier es selbst
# Eingabe lesen
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: Schreibe deinen Code unten
# 1. Erstelle einen Hash namens 'student' mit den Schlüsseln "name" und "grade"
# 2. Aktualisiere den Schlüssel "grade" mit dem neuen Notenwert
# 3. Analysiere das key_value_pair und füge es dem Hash hinzu
# 4. Lösche den Schlüssel "name" und speichere den entfernten Wert
# Ausgabe des entfernten Namens
puts removed_name
# Ausgabe des finalen Hashs
puts studentDiese 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 Eingabe3Operatoren 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