Ich habe einen Hash, wobei Schlüssel ist eine Zeichenfolge und Wert ist ein Array einer Zeichenfolge. Ich mag etwas wie folgen aus:Hash der Arrays in Ruby
{"k1"=>["v1", "v2"], "k2"=>["v3", "v4"]}
Ich habe nur einen Hash und ein Array, dies umzusetzen. Ich habe so etwas wie folgt codiert:
hash1 = Hash.new
arr = Array.new
arr.push "v1"
arr.push "v2"
hash1["k1"] = arr
#hash is like this: {"k1"=>["v1", "v2"]
#Now I clear the array to read the new values
arr. clear
arr.push "v3"
arr.push "v4"
hash1["k2"] = arr
puts hash1
#Output: {"k1"=>["v3", "v4"], "k2"=>["v3", "v4"]}
#Notice that k1's value also got updated
Dann änderte ich eine Zeile:
hash1 = Hash.new
arr = Array.new
arr.push "v1"
arr.push "v2"
hash1["k1"] = arr
arr = [] # ** This is the only changed line. Now k1's value is correct. **
arr.push "v3"
arr.push "v4"
hash1["k2"] = arr
puts hash1
#Output: {"k1"=>["v1", "v2"], "k2"=>["v3", "v4"]} (which I wanted)
Kann jemand bitte erklären Sie mir, wie ist das passiert? Ich bin sehr neu in Ruby. Im Idealfall, was ist der richtige Weg, um dieses Problem zu programmieren?
"Ich habe nur einen Hash und ein Array, um dies zu implementieren." Nicht in deinem zweiten Beispiel. Dort haben Sie zwei Arrays. – Ajedi32
'{}' ist fast immer vorzuziehen zu 'Hash.new' und' [] 'zu' Array.new'. – tadman
@tadman warum ist es vorzuziehen? Ist es nur für die Lesbarkeit? oder gibt es andere Vorteile? –