
Pattern Matching
นิพจน์ match, if let, while let, destructuring, guards, @ bindings, ความครบถ้วน (exhaustiveness)
1ไวยากรณ์ที่ถูกต้องสำหรับนิพจน์ match พื้นฐานใน Rust คืออะไร?
ไวยากรณ์ที่ถูกต้องสำหรับนิพจน์ match พื้นฐานใน Rust คืออะไร?
คำตอบ
นิพจน์ match ใน Rust ใช้คีย์เวิร์ด match ตามด้วยค่าที่จะวิเคราะห์ จากนั้นเป็นวงเล็บปีกกาที่บรรจุ arm (pattern) ต่าง ๆ คั่นด้วยเครื่องหมายจุลภาค แต่ละ arm ใช้ pattern ตามด้วย => และโค้ดที่จะรัน ไวยากรณ์นี้ทำให้คอมไพเลอร์ตรวจสอบได้ว่าครอบคลุมทุกกรณีที่เป็นไปได้
2ควรใช้ pattern ใดเพื่อจับค่าที่เหลือทั้งหมดใน match?
ควรใช้ pattern ใดเพื่อจับค่าที่เหลือทั้งหมดใน match?
คำตอบ
pattern _ (underscore) คือ catch-all pattern ใน Rust มันจะจับคู่กับค่าใดก็ได้โดยไม่ผูกค่านั้นกับตัวแปร อีกทางเลือกหนึ่งคือการใช้ชื่อตัวแปร (เช่น other หรือ n) เพื่อจับค่า โดยทั่วไปนิยมใช้ _ เมื่อไม่ได้ใช้ค่านั้น เพราะมันแสดงเจตนาได้อย่างชัดเจน
3if let ทำงานอย่างไรเมื่อเทียบกับ match?
if let ทำงานอย่างไรเมื่อเทียบกับ match?
คำตอบ
if let เป็นไวยากรณ์แบบย่อสำหรับ match ที่จัดการเพียง pattern เดียวและละเว้นที่เหลือ แทนที่จะเขียน match แบบเต็มที่มี arm _ catch-all การใช้ if let ช่วยให้ดึงค่าออกมาได้อย่างกระชับเมื่อมีเพียงกรณีเฉพาะเท่านั้นที่สำคัญ มันมีประโยชน์อย่างยิ่งเมื่อใช้กับ Option และ Result
exhaustiveness ในบริบทของ pattern matching ของ Rust คืออะไร?
จะแยกโครงสร้าง tuple ใน pattern match ได้อย่างไร?
+15 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Rust อื่นๆ
พื้นฐาน Rust
Ownership & Borrowing
Structs & Enums
การจัดการข้อผิดพลาด
คอลเลกชัน
โมดูลและแพ็กเกจ
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
มาโคร
Serde และการ Serialization
Unsafe Rust
Trait ขั้นสูง
Lifetime ขั้นสูง
Type System
Tokio & Async I/O
การเพิ่มประสิทธิภาพ
Memory Management
Web Frameworks
Database Integration
Design Pattern ของ Rust
เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี