Я считаю, что лучше всего скопировать значение nil
в хеш.Если вы передаете опцию :foo => nil
, это может что-то значить и должно переопределить значение по умолчанию :foo
, например, 42
.Это также упрощает использование опций, которые по умолчанию должны иметь значение true
, хотя следует использовать fetch
в следующих случаях:
opt = hash.fetch(:do_cool_treatment, true) # => will be true if key is not present
Существует множество способов копирования значений, включая nil
илиfalse
.
Для одного ключа вы можете использовать has_key?
вместо поиска:
hash1[:key] = hash2[:key] if hash2.has_key? :key
Для всех (или многих) клавиш используйте merge!
:
hash1.merge!(hash2)
Если вы хотите сделать это только для пары клавиш hash2
, вы можете нарезать ее:
hash1.merge!(hash2.slice(:key, ...))