Döngüden sonra nil döndür ve ayrıca Ruby'de blok olmadıkça

Aug 18 2020

Aşağıdaki gibi çalışan bir kodum var. Döngüden nilsonra eachve unless elseaşağıdaki örnekte geri dönmenin daha iyi bir yolu var mı ?

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

I geçmesi gerekir nil, bu yöntem, adı diğer yöntemlerde, farklı durum vardır, çünkü her bir durumda. Kodu yukarıdaki gibi yazmamın nedeni budur.

Yanıtlar

5 D.SM Aug 18 2020 at 03:05

Ruby'nin bir detectyöntemi vardır, bu nedenle tüm yönteminiz ile değiştirilebilir

members.detect { |member| member.name == member_name }

Bir kenara, eachboş diziler için iyi çalışır, bu nedenle empty?, açık döngüyü koruyor olsanız bile sahip olduğunuz kontrol tamamen gereksizdir.