Discriminated Unions — Pattern Matching

wk
1 min readJul 4, 2020

--

ตัวอย่าง การประกาศ DU (Discriminated Unions) ชื่อ Folder แบบ Recursive เพื่อจำลองโครงสร้าง Folder โดยใน Folder สามารถมีได้ทั้งไฟล์และ Folder ย่อย

F#

F# มี Syntax สำหรับประกาศ DU และดึงค่าของแต่ละ Tag ด้วย Pattern Matching

ตัวอย่าง การดึงข้อมูลจาก DU ผ่านฟังก์ชัน print

Rust

Rust ไม่มี DU แต่สามารถใช้ Value Enum เพื่อจำลอง DU โดยสามารถดึง Value ของแต่ละ Element ด้วย Pattern Matching คล้ายกับ F#

TypeScript

ใช้วิธีประกาศ DU ด้วย Type Alias + Union และดึงค่าใน DU ผ่าน Type Guard เช่น ใช้ฟังก์ชัน isFolder สำหรับตรวจสอบว่า Item ที่ส่งเข้ามาเป็น Folder หรือไม่

--

--

No responses yet