Renvoie nil après la boucle et également dans le bloc à moins que Ruby
J'ai un code de travail comme ci-dessous. Existe-t-il un meilleur moyen de revenir nil
après la each
boucle et unless else
dans l'exemple ci-dessous ?
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
Je devrais passer nil
dans chaque cas car il existe différentes conditions dans d'autres méthodes où cette méthode est appelée. C'est la raison pour laquelle j'ai écrit le code comme ci-dessus.
Réponses
5 D.SM
Ruby a une detect
méthode, donc toute votre méthode peut être remplacée par
members.detect { |member| member.name == member_name }
En passant, each
fonctionne bien pour les tableaux vides, donc la empty?
vérification que vous avez est complètement inutile même si vous gardez la boucle explicite.