4
Ruby Array วัตถุ find_first?
ฉันขาดอะไรบางอย่างในเอกสาร Array หรือไม่ ฉันมีอาร์เรย์ที่มีออบเจ็กต์มากถึงหนึ่งชิ้นที่ตรงตามเกณฑ์ที่กำหนด ฉันต้องการค้นหาวัตถุนั้นอย่างมีประสิทธิภาพ ความคิดที่ดีที่สุดที่ฉันมีจากเอกสารคือ: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? แต่ฉันไม่พอใจด้วยเหตุผลสองประการ: นั่นselectทำให้ฉันสำรวจอาร์เรย์ทั้งหมดแม้ว่าเราจะสามารถประกันตัวได้หลังจากการโจมตีครั้งแรก ฉันต้องการรหัสบรรทัด (พร้อมเงื่อนไข) เพื่อทำให้ผู้สมัครแบนราบ การดำเนินการทั้งสองอย่างสิ้นเปลืองโดยรู้ล่วงหน้าว่ามีวัตถุที่น่าพอใจ 0 หรือ 1 ชิ้น สิ่งที่ฉันต้องการคือ: array.find_first(block) ซึ่งส่งคืนค่า nil หรืออ็อบเจ็กต์แรกที่บล็อกประเมินเป็น true โดยสิ้นสุดการข้ามผ่านที่อ็อบเจ็กต์นั้น ฉันต้องเขียนเองหรือไม่? วิธีการที่ยอดเยี่ยมอื่น ๆ ทั้งหมดใน Array ทำให้ฉันคิดว่ามันอยู่ที่นั่นและฉันไม่เห็นมัน
137
ruby
arrays
performance
find