Retorno nulo após o loop e também no bloco excepto em Ruby
Aug 18 2020
Eu tenho um código de trabalho como abaixo. Existe alguma maneira melhor de retornar nil
após o each
loop e unless else
no exemplo abaixo?
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
Devo passar nil
em cada caso porque existem condições diferentes em outros métodos onde esse método é chamado. Essa é a razão pela qual escrevi o código acima.
Respostas
5 D.SM Aug 18 2020 at 03:05
Ruby tem um detect
método, então todo o seu método pode ser substituído por
members.detect { |member| member.name == member_name }
Como um aparte, each
funciona bem para matrizes vazias, portanto, a empty?
verificação que você faz é completamente desnecessária, mesmo se você mantiver o loop explícito.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?