Ho un hash, dove key è una stringa e value è un array di una stringa. voglio qualcosa di simile:Hash of Arrays in Ruby
{"k1"=>["v1", "v2"], "k2"=>["v3", "v4"]}
ho solo un hash e un array per implementare questo. Ho codificato qualcosa di simile:
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
poi ho cambiato una sola riga:
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)
Per favore qualcuno può spiegare come avviene questo? Sono molto nuovo a Ruby. Idealmente, qual è il modo corretto per codificare questo problema?
"Ho solo un hash e un array per implementarlo." Non nel tuo secondo esempio. Lì hai due array. – Ajedi32
'{}' è quasi sempre preferibile a 'Hash.new', e' [] 'a' Array.new'. – tadman
@tadman perché è preferibile? È solo per la leggibilità? o ci sono altri benefici? –