Topic 3
Topic 3
โค้ด Ruby ใช้ร่วมจากโฟลเดอร์ en/ ของต้นฉบับ เพื่อให้สองภาษาผูกกับชุดทดสอบเดียวกัน
ภาพรวม
ทำไมหัวข้อนี้จึงสำคัญ
Enumerable คือหนึ่งในความสามารถของ Ruby ที่สำคัญที่สุดสำหรับการเขียนโปรแกรมใน ชีวิตประจำวัน มันชวนให้เราอธิบายการแปลงข้อมูลและการคัดเลือกข้อมูลตรง ๆ แทนที่จะ ต้องคอยจัดการ index หรือตัวสะสมค่าที่ต้องคอยเปลี่ยนค่าด้วยมือ
สิ่งที่ผมอยากให้คุณทำได้เมื่อจบหัวข้อนี้
เมื่อจบหัวข้อนี้ คุณควรจะ:
จุดที่ผมใช้ดูความเข้าใจ
ผมอยากให้คุณอธิบายได้ว่าทำไมจึงเลือก method ในนั้น ไม่ใช่แค่ทำให้ชุดทดสอบผ่าน
โน้ตสั้น
หลายคนเริ่มรู้สึกว่า Ruby งามเป็นพิเศษตอนที่มันต้องทำงานกับ collections เพราะ Enumerable เปิดทางให้เราเรียกชื่อชนิดของงานได้ตรง ๆ เช่น:
ในเชิงการสอน เรื่องนี้สำคัญมาก เพราะมันย้ายความสนใจจากคำถามว่า "จะวนลูปยังไง" ไป สู่คำถามว่า "ผมกำลังบอกการทำงานแบบไหนอยู่" นี่เป็นการเปลี่ยนวิธีคิดที่ชัดมากสำหรับคน ที่มาจาก Java
จุดที่ Ruby ทำได้ดีในหัวข้อนี้:
จุดที่ต้องระวังในหัวข้อนี้:
คำถามชวนคิด:
กับลำดับการทำงานของ Enumerable ที่ตั้งชื่อแต่ละขั้นไว้ชัดเจน
ตัวอย่างแบบลงมือดู
Example 1: รายงานยอดรวม
งานรายงานยอดใน orders หรือ invoices เป็นตัวอย่าง Ruby ที่ดีมาก เพราะเป็นงานที่พบ บ่อยและมีข้อมูลเยอะ คุณจึงเห็นได้ทันทีว่าทำไม method ที่ทำงานกับ collection ถึงรู้สึก เป็นธรรมชาติ
orders . sum { |order| order [: amount ] } worked_examples.md ruby โค้ดนี้อ่านใกล้เคียงกับกฎทางธุรกิจมากกว่าการเขียนลูป
Example 2: รวมยอดตามสกุลเงิน
โค้ดสายการเงินหรือการค้าจะต้องรวมค่าตาม key ที่ใช้ร่วมกันอยู่บ่อย ๆ
invoices . each_with_object ({}) do |invoice , totals| key = invoice [: currency ] totals [ key ] || = 0 totals [ key ] += invoice [: amount ] end worked_examples.md ruby เหตุผลที่ตัวอย่างนี้มีประโยชน์: