Ruby มีเทคนิคมากมายในการวนซ้ำส่วนประกอบและการทำงานกับคอลเลกชัน ห้าวิธีที่ใช้บ่อยจะถูกสำรวจในโพสต์บล็อกนี้: แต่ละวิธี ทำแผนที่ (หรือรวบรวม) เลือก และตรวจจับ (หรือค้นหา)
- แต่ละวิธี:
โมดูล Enumerable ใน Ruby สร้างขึ้นจากแต่ละฟังก์ชัน ช่วยให้คุณสามารถดำเนินการกับแต่ละองค์ประกอบของคอลเลกชันในขณะที่คุณวนซ้ำองค์ประกอบเหล่านั้นโดยไม่ต้องเปลี่ยนคอลเลกชันหลัก หากคุณไม่จำเป็นต้องแก้ไของค์ประกอบด้วยตนเอง แต่ยังต้องการรันโค้ดสำหรับแต่ละองค์ประกอบ จะมีประโยชน์
numbers = [1, 2, 3, 4] => [1, 2, 3, 4] 3.0.0 :002 > numbers.each do |num| 3.0.0 :003 > puts num * 2 3.0.0 :004 > end 2 4 6 8 => [1, 2, 3, 4]
2. แผนที่/วิธีการรวบรวม:
วิธีการแมป (หรือรวบรวม) ใช้สำหรับ การแปลงแต่ละองค์ประกอบของคอลเลกชัน และ ส่งคืนอาร์เรย์ใหม่ที่มีค่าที่แปลงแล้ว พวกเขาใช้บล็อกโค้ดกับแต่ละองค์ประกอบและรวบรวมผลลัพธ์ สามารถใช้แผนที่เงื่อนไขและการรวบรวมได้
numbers = [1, 2, 3, 4] => [1, 2, 3, 4] numbers.map {|num| num * 2} => [2, 4, 6, 8]
3. วิธีการเลือก:
วิธีการเลือกหรือที่เรียกว่าตัวกรอง ใช้เพื่อกรององค์ประกอบตามเงื่อนไข ส่งคืนอาร์เรย์ใหม่ที่มีเฉพาะองค์ประกอบที่ ตรงตามเกณฑ์หลังจากประเมินบล็อกของโค้ดสำหรับแต่ละองค์ประกอบ
numbers = [1, 2, 3, 4] => [1, 2, 3, 4] numbers.select {|num| num.even?} => [2, 4]
4. วิธีการตรวจจับ/ค้นหา:
วิธีการตรวจจับหรือที่เรียกว่า find ใช้เพื่อ ค้นหาองค์ประกอบแรก ในคอลเลกชันที่ตรงตามเงื่อนไข โดยจะประเมินบล็อกของโค้ดสำหรับแต่ละองค์ประกอบและส่งกลับองค์ประกอบแรกที่ตรงกับเงื่อนไข
numbers = [1, 2, 3, 4] => [1, 2, 3, 4] numbers.detect {|num| num.even?} => 2