คืนค่า nil หลังจากวนซ้ำและในเว้นแต่บล็อกใน Ruby
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?
ตรวจสอบที่คุณมีจึงไม่จำเป็นอย่างยิ่งแม้ว่าคุณจะยังคงวนซ้ำอย่างชัดเจนก็ตาม