Czy istnieje nieniszczący sposób usunięcia pary wartości klucza z hasza?Nieniszczący sposób usuwania klucza z hasza
Na przykład, jeśli nie
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.reject{|key, _| key == :foo}
lub
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.dup
new_hash.delete(:foo)
następnie original_hash
pozostaje niezmieniona, a new_hash
ulega zmianie, ale są ciut gadatliwy. Jednakże, jeśli nie
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash.delete(:foo)
następnie original_hash
ulega zmianie, co nie jest to, co chcę.
Czy istnieje jedna metoda, która robi to, co chcę?
'original_hash' * jest * zmieniane w twoim pierwszym przykładzie używając' delete_if'. Ponadto, 'new_hash' w twoim drugim przykładzie używającym' delete' pobiera wartość skojarzoną z ': foo', tj.': Bar', a nie sam skrót. –
@shioyama dzięki za to! > _ < –