วิธีการจับคู่ค่าหลายค่าใน Scala


85

สมมติว่าฉันต้องการจัดการค่าที่ส่งคืนหลายค่าจากบริการระยะไกลโดยใช้รหัสเดียวกัน ฉันไม่รู้ว่าจะแสดงออกอย่างไรใน 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

โปรดทราบว่าฉันทำให้ตัวอย่างง่ายขึ้นดังนั้นฉันจึงไม่ต้องการให้รูปแบบตรงกับนิพจน์ทั่วไปหรือบางอย่าง ค่าการจับคู่เป็นค่าที่ซับซ้อน


เป็นไปได้ที่จะซ้ำกันของคลาส Match หลายกรณีใน scala
nawfal

คำตอบ:


150

คุณทำได้:

code match {
  case "1" | "2" => // whatever
  case "3" =>
}

โปรดทราบว่าคุณไม่สามารถผูกบางส่วนของรูปแบบกับชื่อ - คุณไม่สามารถทำได้ในขณะนี้:

code match {
  case Left(x) | Right(x) =>
  case null =>
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.