В Ruby я хотел бы знать, как лучше всего обрабатывать получение переменной из хэша json, а затем продолжать работу, только если она существует, иначе выдает ошибку.
Итак, вот пример кода:
digest = cover_id(map)
def cover_id(a_map)
cover_from_map = a_map['metadata']['cover'][0]['@']
a_map['resources'].find {|resource| resource['id']==cover_from_map}['-major-md5-digest']
end
Глядя на это, я не понимаю, как лучше всего справиться с двумя вещами:
- Если во-первых
song_map['metadata']['cover'][0]['@']
не существовало - это просто случай использованияsong_map.key?(['metadata']['cover'][0]['@'])
.Я чувствую, что используя это означает, что я продублировал код? - Вместо жесткого кодирования 0 есть какой-нибудь способ, которым я могу просто сказать, получить первый?
По сути, из того, что я знаю сейчасЯ подумал:
digest = cover_id(map) rescue nil
def cover_id(a_map)
unless a_map['metadata']['cover'][0]['@'] return nil
cover_from_map = a_map['metadata']['cover'][0]['@']
a_map['resources'].find {|resource| resource['id']==cover_from_map}['-major-md5-digest']
end
Но я не думаю, что справился бы, если бы a_map['metadata']['cover'][0]['@']
на самом деле не существовало.
Любая помощь приветствуется.