Rust

Pattern Matching

นิพจน์ match, if let, while let, destructuring, guards, @ bindings, ความครบถ้วน (exhaustiveness)

18 คำถามสัมภาษณ์·
Mid-Level
1

ไวยากรณ์ที่ถูกต้องสำหรับนิพจน์ match พื้นฐานใน Rust คืออะไร?

คำตอบ

นิพจน์ match ใน Rust ใช้คีย์เวิร์ด match ตามด้วยค่าที่จะวิเคราะห์ จากนั้นเป็นวงเล็บปีกกาที่บรรจุ arm (pattern) ต่าง ๆ คั่นด้วยเครื่องหมายจุลภาค แต่ละ arm ใช้ pattern ตามด้วย => และโค้ดที่จะรัน ไวยากรณ์นี้ทำให้คอมไพเลอร์ตรวจสอบได้ว่าครอบคลุมทุกกรณีที่เป็นไปได้

2

ควรใช้ pattern ใดเพื่อจับค่าที่เหลือทั้งหมดใน match?

คำตอบ

pattern _ (underscore) คือ catch-all pattern ใน Rust มันจะจับคู่กับค่าใดก็ได้โดยไม่ผูกค่านั้นกับตัวแปร อีกทางเลือกหนึ่งคือการใช้ชื่อตัวแปร (เช่น other หรือ n) เพื่อจับค่า โดยทั่วไปนิยมใช้ _ เมื่อไม่ได้ใช้ค่านั้น เพราะมันแสดงเจตนาได้อย่างชัดเจน

3

if let ทำงานอย่างไรเมื่อเทียบกับ match?

คำตอบ

if let เป็นไวยากรณ์แบบย่อสำหรับ match ที่จัดการเพียง pattern เดียวและละเว้นที่เหลือ แทนที่จะเขียน match แบบเต็มที่มี arm _ catch-all การใช้ if let ช่วยให้ดึงค่าออกมาได้อย่างกระชับเมื่อมีเพียงกรณีเฉพาะเท่านั้นที่สำคัญ มันมีประโยชน์อย่างยิ่งเมื่อใช้กับ Option และ Result

4

exhaustiveness ในบริบทของ pattern matching ของ Rust คืออะไร?

5

จะแยกโครงสร้าง tuple ใน pattern match ได้อย่างไร?

+15 คำถามสัมภาษณ์

เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี