Самый надежный способ для общего хэша - спросить, есть ли у него ключ:
myvar = h.has_key?('MY_VAR') ? h['MY_VAR'] : 'default'
Если вам не нужны значения nil
или false
(т.е. вы хотите обрабатывать их так же, как «не существует»), тогда подход undur_gongor хорош (это также должно быть хорошо, когда h
есть ENV
):
myvar = h['MY_VAR'] || 'foobar'
И если вы хотите разрешить nil
, чтобы быть в вашем хэше, но притворяться, что его нет (т.е. значение nil
совпадает с «не существует»), позволяя false
в вашем хэше:
myvar = h['MY_VAR'].nil?? 'foobar' : h['MY_VAR']
In конец действительно зависит от вашего точного намерения, и вы должны выбрать подход, который соответствует вашим намерениям. Выбор между if/else/end
и ? :
, конечно, является вопросом вкуса и «кратким», не означает «наименьшее количество символов», поэтому не стесняйтесь использовать тройной или if
блок по желанию.