Ritorna nil dopo il ciclo e anche nel blocco a meno che in Ruby
Aug 18 2020
Ho un codice funzionante come di seguito. C'è un modo migliore per tornare nil
dopo il each
ciclo e unless else
nell'esempio seguente?
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
Dovrei passare nil
in ogni caso perché ci sono condizioni diverse in altri metodi in cui viene chiamato questo metodo. Questo è il motivo per cui ho scritto il codice come sopra.
Risposte
5 D.SM Aug 18 2020 at 03:05
Ruby ha un detect
metodo, quindi il tuo intero metodo può essere sostituito con
members.detect { |member| member.name == member_name }
Per inciso, each
funziona bene per gli array vuoti, quindi il empty?
controllo che hai è completamente inutile anche se mantieni il ciclo esplicito.