C'è un modo non distruttivo di eliminare una coppia di valori chiave da un hash?Modo non distruttivo di cancellare una chiave da un hash
Per esempio, se avete fatto
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.reject{|key, _| key == :foo}
o
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.dup
new_hash.delete(:foo)
poi original_hash
è immutato, e new_hash
è cambiato, ma sono un po 'prolisso. Tuttavia, se avete fatto
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash.delete(:foo)
poi original_hash
è cambiato, che non è quello che voglio.
C'è un unico metodo che fa ciò che voglio?
'original_hash' * è * modificato nel primo esempio utilizzando' delete_if'. Inoltre, 'new_hash' nel tuo secondo esempio usando' delete' ottiene il valore associato a ': foo', cioè': bar', non l'hash stesso. –
@shioyama grazie per quello! > _ < –