Rubyでブロックされていない限り、ループの後にnilを返します。
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?
正常に機能するため、明示的なループを維持している場合でも、チェックは完全に不要です。