รูปแบบและการจับคู่ (Patterns and Matching)
รูปแบบ (Patterns) เป็นไวยากรณ์พิเศษในภาษา Rust สำหรับการจับคู่กับโครงสร้างของชนิดข้อมูล ทั้งชนิดข้อมูลที่ซับซ้อนและเรียบง่าย การใช้รูปแบบร่วมกับพจน์ match และโครงสร้างอื่นๆ ช่วยให้คุณควบคุมลำดับการทำงาน (control flow) ของโปรแกรมได้ดียิ่งขึ้น รูปแบบประกอบด้วยส่วนผสมของสิ่งต่อไปนี้:
- ค่าตรงตัว (Literals)
- อาเรย์, enums, structs, หรือ tuples ที่ถูกแยกโครงสร้าง (Destructured)
- ตัวแปร (Variables)
- ไวลด์การ์ด (Wildcards)
- ตัวแทนตำแหน่ง (Placeholders)
ตัวอย่างรูปแบบบางส่วน เช่น x, (a, 3), และ Some(Color::Red) ในบริบทที่รูปแบบสามารถใช้งานได้ องค์ประกอบเหล่านี้จะอธิบายรูปร่าง (shape) ของข้อมูล จากนั้นโปรแกรมของเราจะจับคู่ค่าต่างๆ กับรูปแบบเพื่อพิจารณาว่าข้อมูลนั้นมีรูปร่างที่ถูกต้องสำหรับการทำงานกับส่วนของโค้ดนั้นๆ ต่อไปหรือไม่
ในการใช้รูปแบบ เราจะเปรียบเทียบรูปแบบนั้นกับบางค่า หากรูปแบบจับคู่ตรงกับค่า เราจะนำส่วนต่างๆ ของค่านั้นมาใช้ในโค้ดของเรา ลองนึกถึงพจน์ match ในบทที่ 6 ที่ใช้รูปแบบ เช่น ตัวอย่างเครื่องคัดแยกเหรียญ หากค่าตรงกับรูปร่างของรูปแบบ เราจะสามารถใช้ชิ้นส่วนที่มีชื่อได้ หากไม่ตรง โค้ดที่เกี่ยวข้องกับรูปแบบนั้นจะไม่ถูกทำงาน
บทนี้เป็นคู่มืออ้างอิงเกี่ยวกับทุกสิ่งทุกอย่างที่เกี่ยวข้องกับรูปแบบ เราจะครอบคลุมตำแหน่งที่สามารถใช้รูปแบบได้อย่างถูกต้อง ความแตกต่างระหว่างรูปแบบแบบ refutable (หักล้างได้) และ irrefutable (หักล้างไม่ได้) รวมถึงไวยากรณ์รูปแบบประเภทต่างๆ ที่คุณอาจได้พบเห็น เมื่ออ่านจนจบบทนี้ คุณจะรู้วิธีใช้รูปแบบเพื่อสื่อสารและแสดงแนวคิดต่างๆ ได้อย่างชัดเจน