लूप के बाद शून्य लौटें और रूबी में ब्लॉक होने तक भी

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

रूबी में एक detectविधि है, इसलिए आपकी पूरी विधि को प्रतिस्थापित किया जा सकता है

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

एक तरफ के रूप में, eachखाली सरणियों के लिए ठीक काम करता है, इसलिए empty?आपके पास जो चेक है वह पूरी तरह से अनावश्यक है भले ही आप स्पष्ट लूप रखें।