Недавно я узнал, что вы можете использовать rescue
в строке кода, если что-то пойдет не так в этой строке (см. http://www.rubyinside.com/21-ruby-tricks-902.html Совет № 21). У меня есть код, который выглядел так:
if obj['key'] && obj['key']['key2'] && obj['key']['key2']['name']
name = obj['key']['key2']['name']
else
name = ''
end
С помощью метода rescue
, я считаю, что могу изменить этот код на что-то вроде этого:
name = obj['key']['key2']['name'] rescue ''
Если исключение nil выбрано на любом уровне доступа к хешу, оно должно быть пойманным спасением и дать мне '', что я и хочу. Я также мог бы выбрать имя nil
, если это было желаемое поведение.
Есть ли какая-то известная опасность в этом? Я спрашиваю, потому что это кажется слишком хорошим, чтобы быть правдой. У меня есть очень уродливый код, который я бы хотел избавиться от этого, похоже на первый пример кода.