So fügen Sie dem Hash ein neues Element hinzu


176

Ich bin neu bei Ruby und weiß nicht, wie ich einem bereits vorhandenen Hash ein neues Element hinzufügen soll. Zum Beispiel konstruiere ich zuerst Hash:

hash = {item1: 1}

danach möchte ich item2 hinzufügen, danach habe ich folgenden Hash:

{item1: 1, item2: 2}

Ich weiß nicht, was ich mit Hash machen soll. Könnte mir jemand helfen?

Antworten:


304

Erstellen Sie den Hash:

hash = {:item1 => 1}

Fügen Sie ein neues Element hinzu:

hash[:item2] = 2

7
Verwenden merge! Methode hash.merge!(item2: 2)zum Zusammenführen und Speichern des Wertes !
Maguri

3
@maguri arbeitet hash.merge!(item2: 2)langsamer hash[:item2] = 2als wenn es nur ein Argument gibt
Rahul Dess

72

Wenn Sie neue Elemente aus einem anderen Hash hinzufügen möchten, verwenden Sie die folgende mergeMethode:

hash = {:item1 => 1}
another_hash = {:item2 => 2, :item3 => 3}
hash.merge(another_hash) # {:item1=>1, :item2=>2, :item3=>3}

In Ihrem speziellen Fall könnte es sein:

hash = {:item1 => 1}
hash.merge({:item2 => 2}) # {:item1=>1, :item2=>2}

Es ist jedoch nicht ratsam, es zu verwenden, wenn Sie nur ein Element mehr hinzufügen möchten.

Achten Sie darauf, dass mergedie Werte durch die vorhandenen Schlüssel ersetzt werden:

hash = {:item1 => 1}
hash.merge({:item1 => 2}) # {:item1=>2}

genau wie hash[:item1] = 2

Beachten Sie auch, dass die mergeMethode (natürlich) den ursprünglichen Wert der Hash-Variablen nicht beeinflusst - sie gibt einen neuen zusammengeführten Hash zurück. Wenn Sie den Wert der Hash-Variablen ersetzen möchten, verwenden Sie merge!stattdessen:

hash = {:item1 => 1}
hash.merge!({:item2 => 2})
# now hash == {:item1=>1, :item2=>2}

35

hash.store (Schlüssel, Wert) - Speichert ein Schlüssel-Wert-Paar in Hash.

Beispiel:

hash   #=> {"a"=>9, "b"=>200, "c"=>4}
hash.store("d", 42) #=> 42
hash   #=> {"a"=>9, "b"=>200, "c"=>4, "d"=>42}

Documentation


27

Es ist so einfach wie:

irb(main):001:0> hash = {:item1 => 1}
=> {:item1=>1}
irb(main):002:0> hash[:item2] = 2
=> 2
irb(main):003:0> hash
=> {:item1=>1, :item2=>2}


4
hash_items = {:item => 1}
puts hash_items 
#hash_items will give you {:item => 1}

hash_items.merge!({:item => 2})
puts hash_items 
#hash_items will give you {:item => 1, :item => 2}

hash_items.merge({:item => 2})
puts hash_items 
#hash_items will give you {:item => 1, :item => 2}, but the original variable will be the same old one. 

0

Erstellen Sie einen Hash als:

h = Hash.new
=> {}

Fügen Sie nun Folgendes in den Hash ein:

h = Hash["one" => 1]

2
Wenn Sie versuchen, auf diese Weise mehrere Schlüssel einzufügen, werden Sie feststellen, dass Sie jedes Mal einen neuen Hash erstellen. Wahrscheinlich nicht was du willst. Und wenn das ist , was Sie wollen, Sie brauchen nicht den Hash.newTeil , unabhängig, weil Hash[]bereits eine neue Hash erzeugt wird .
Philomory
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.