คำถามติดแท็ก pattern-matching

ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการทดสอบว่าโครงสร้างข้อมูลมีรูปร่างเฉพาะหรือมีค่าเฉพาะในบางตำแหน่ง ภาษาที่ใช้งานได้จำนวนมากมีโครงสร้างการจับคู่รูปแบบ คำถามส่วนใหญ่ในแท็กนี้ควรมีแท็กสำหรับภาษาที่คุณกำลังเขียนโปรแกรมด้วยอย่าใช้แท็กนี้สำหรับคำถามการแสดงออกปกติให้ใช้ [regex] แทน ในทำนองเดียวกันสำหรับการจับคู่รูปแบบ (globbing) ในกระสุนแบบ POSIX ให้ใช้ [glob]

3
PostgreSQL รองรับการเปรียบเทียบแบบ“ เน้นเสียง” หรือไม่
ใน Microsoft SQL Server เป็นไปได้ที่จะระบุการเปรียบเทียบแบบ "ไม่เน้นเสียง" (สำหรับฐานข้อมูลตารางหรือคอลัมน์) ซึ่งหมายความว่าเป็นไปได้สำหรับแบบสอบถามเช่น SELECT * FROM users WHERE name LIKE 'João' เพื่อค้นหาแถวที่มีJoaoชื่อ ฉันรู้ว่าเป็นไปได้ที่จะตัดสำเนียงจากสตริงใน PostgreSQL โดยใช้ฟังก์ชันการสนับสนุนunaccent_stringแต่ฉันสงสัยว่า PostgreSQL รองรับการเรียง "ไม่เน้นเสียง" เหล่านี้หรือไม่ดังนั้นSELECTข้างต้นจะได้ผล

1
วิธีการจับคู่ค่าหลายค่าใน Scala
สมมติว่าฉันต้องการจัดการค่าที่ส่งคืนหลายค่าจากบริการระยะไกลโดยใช้รหัสเดียวกัน ฉันไม่รู้ว่าจะแสดงออกอย่างไรใน Scala: code match { case "1" => // Whatever case "2" => // Same whatever case "3" => // Ah, something different } ฉันรู้ว่าฉันสามารถใช้ Extract Method และเรียกสิ่งนั้นได้ แต่ยังคงมีการเรียกซ้ำอยู่ ถ้าฉันใช้ Ruby ฉันจะเขียนแบบนี้: case code when "1", "2" # Whatever when "3" # Ah, something different end โปรดทราบว่าฉันทำให้ตัวอย่างง่ายขึ้นดังนั้นฉันจึงไม่ต้องการให้รูปแบบตรงกับนิพจน์ทั่วไปหรือบางอย่าง ค่าการจับคู่เป็นค่าที่ซับซ้อน

3
ฉันจะใช้รายการความยาวขั้นต่ำคงที่ได้ทั้งหมดและสวยงามได้อย่างไร
ฉันกำลังจัดการกับฟังก์ชั่นที่จะเป็นดังนี้: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) กล่าวอีกนัยหนึ่งเมื่อได้รับรายการจะใช้องค์ประกอบหกรายการแรกสำหรับบางสิ่งและหากรายการมีความยาวน้อยกว่าหกองค์ประกอบรายการนั้นจะใช้defเป็นรายการสแตนด์บายสำหรับรายการที่หายไป นี่คือทั้งหมด แต่ชิ้นส่วนของมันไม่ได้ (เหมือนmap fromJust . filter isJust) ดังนั้นฉันจึงไม่ชอบ ฉันพยายามเขียนใหม่เพื่อที่ว่ามันไม่จำเป็นต้องใช้ความลำเอียงและได้สิ่งนี้: foo [] = foobar def def def def def def foo [a] = foobar a def def def def def foo [a,b] = foobar …

1
ความแตกต่างระหว่างการอนุมานประเภทของเมธอดและพารามิเตอร์ประเภทคลาสในการจับคู่รูปแบบ
ทำไมการจับคู่รูปแบบทำงานแตกต่างกันเมื่อพารามิเตอร์ชนิดมาจากวิธีการปิดล้อมซึ่งตรงข้ามกับคลาสที่ล้อมรอบ ตัวอย่างเช่น, trait Base[T] case class Derived(v: Int) extends Base[Int] class Test[A] { def method(arg: Base[A]) = { arg match { case Derived(_) => 42 } } } ให้ข้อผิดพลาด constructor cannot be instantiated to expected type; found : A$A87.this.Derived required: A$A87.this.Base[A] case Derived(_) => 42 ^ ในขณะที่มันประสบความสำเร็จในการรวบรวมเมื่อAเป็นพารามิเตอร์ประเภทวิธี class Test { …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.