Возвращает nil после цикла, а также в блоке if в Ruby
Aug 18 2020
У меня есть рабочий код, как показано ниже. Есть ли лучший способ вернуться nil
после each
цикла и unless else
в приведенном ниже примере?
def find_member(member_name)
unless members.empty?
members.each do |member|
if member.name == member_name
return member
end
end
nil
else
nil
end
end
Я должен пройти nil
в каждом случае, потому что в других методах, где вызывается этот метод, существуют разные условия. Вот почему я написал код, как указано выше.
Ответы
5 D.SM Aug 18 2020 at 03:05
У Ruby есть detect
метод, поэтому весь ваш метод можно заменить на
members.detect { |member| member.name == member_name }
Кроме того, each
отлично работает для пустых массивов, поэтому в empty?
вашей проверке нет необходимости, даже если вы сохраняете явный цикл.