บทช่วยสอน Scala จับคู่รูปแบบ ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ ใช้คลาสของตัวอย่าง,
สกาล่าให้เป็นรูปแบบที่มีประสิทธิภาพกลไกการจับคู่ยังเป็นที่ใช้กันอย่างแพร่หลาย
รูปแบบการจับคู่มีชุดของทางเลือกของแต่ละคนซึ่งจะเริ่มขึ้นกับกรณีคำหลักแต่ละคนมีตัวเลือกสำรองข้อมูลและรูปแบบเพื่อส่วนใหญ่ของการแสดงออก ลูกศรสัญลักษณ์=> แยกรูปแบบและการแสดงออก
ต่อไปนี้เป็นรูปแบบที่เรียบง่ายตรงกับตัวอย่างค่าจำนวนเต็ม:
object Test { def main(args: Array[String]) { println(matchTest(3)) } def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" case _ => "many" } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test many
ตรงกับ Java ที่สอดคล้องกันในสวิทช์ แต่เขียนขึ้นหลังจากที่การแสดงออกของตัวเลือกคือตัวเลือกการจับคู่ทางเลือก {}
ตามคำสั่งของการแสดงออกเพื่อให้ตรงกับรหัสที่เขียนจะลองแต่ละโหมดจะเสร็จสมบูรณ์ในการคำนวณถ้าพวกเขาพบว่ามีกรณีการจับคู่จับคู่ส่วนที่เหลือของคดีจะไม่ดำเนินการต่อ
ต่อไปเรามองไปที่ชนิดข้อมูลที่แตกต่างกันของการจับคู่รูปแบบ:
object Test { def main(args: Array[String]) { println(matchTest("two")) println(matchTest("test")) println(matchTest(1)) println(matchTest(6)) } def matchTest(x: Any): Any = x match { case 1 => "one" case "two" => 2 case y: Int => "scala.Int" case _ => "many" } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test 2 many one scala.Int
ตัวอย่างของกรณีแรกที่สอดคล้องกับค่าจำนวนเต็ม 1, กรณีที่สองที่สอดคล้องกับค่าสตริงของทั้งสองกรณีที่สองที่สอดคล้องกับค่าสตริงของทั้งสองกรณีที่สามสอดคล้องกับประเภทของรูปแบบที่ใช้ในการตรวจสอบว่าค่าที่ส่งทั้งหมด ชนิดใช้เมื่อเทียบ isInstanceOf เพื่อตรวจสอบชนิดจับคู่รูปแบบจะดีกว่า กรณีที่สี่เริ่มต้นบ่งชี้ทางเลือกเต็มรูปแบบการแข่งขันการแข่งขันที่ไม่ได้พบในการแข่งขันอื่น ๆ , สวิทช์ที่คล้ายกันในการเริ่มต้น
ใช้กรณีคำหลักคือการกำหนดชั้นเป็นชั้นตัวอย่าง (กรณีชั้นเรียน) รุ่นตัวอย่างเป็นชั้นพิเศษเหมาะสำหรับการจับคู่รูปแบบ
ต่อไปนี้คือตัวอย่างง่ายๆของการเรียนตัวอย่าง:
object Test { def main(args: Array[String]) { val alice = new Person("Alice", 25) val bob = new Person("Bob", 32) val charlie = new Person("Charlie", 32) for (person <- List(alice, bob, charlie)) { person match { case Person("Alice", 25) => println("Hi Alice!") case Person("Bob", 32) => println("Hi Bob!") case Person(name, age) => println("Age: " + age + " year, name: " + name + "?") } } } // 样例类 case class Person(name: String, age: Int) }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test Hi Alice! Hi Bob! Age: 32 year, name: Charlie?
เมื่อคุณประกาศตัวอย่างชั้นเรียนขั้นตอนต่อไปเกิดขึ้นโดยอัตโนมัติ: