Ebook Studio

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 เหตุผลที่ตัวอย่างนี้มีประโยชน์: