Warum ist diese hash:Merkwürdige Verhalten beim Aktualisieren von Hash mit Standard-proc mit + =
test_hash = Hash.new{|hash, key|
Hash.new{|second_level_hash, second_level_key| 0 }
}
nicht durch die folgende Operation aktualisiert?
test_hash[1][1] += 1
test_hash[1][1] # => 0
Der 'Hash.new'-Block wird jedes Mal aufgerufen, wenn ein neuer Schlüssel gefüllt wird, und während Sie nicht verpflichtet sind, etwas mit dem Hash zu tun, ist es normalerweise eine gute Idee, ihn zu ändern. Wenn Sie 'h [k] = ...' oder etwas ähnliches nicht aufrufen, sind Ihre Werte unabhängig vom Hash und werden nicht gespeichert. – tadman
Danke! Warum funktioniert das? test_hash = Hash.new {| h, k | []} test_hash + = ['irgendwas'] –
Ich bekomme "undefinierte Methode' + 'für {}: Hash (NoMethodError) ", was nicht überraschend ist. Das sollte nicht funktionieren. – tadman