Làm thế nào để mẫu khớp với nhiều giá trị trong Scala?


85

Giả sử tôi muốn xử lý nhiều giá trị trả về từ một dịch vụ từ xa bằng cách sử dụng cùng một mã. Tôi không biết làm thế nào để diễn đạt điều này trong Scala:

code match {
  case "1" => // Whatever
  case "2" => // Same whatever
  case "3" => // Ah, something different
}

Tôi biết tôi có thể sử dụng Phương pháp trích xuất và gọi như vậy, nhưng vẫn có sự lặp lại trong cuộc gọi. Nếu tôi đang sử dụng Ruby, tôi sẽ viết nó như thế này:

case code
when "1", "2"
  # Whatever
when "3"
  # Ah, something different
end

Lưu ý rằng tôi đã đơn giản hóa ví dụ, do đó tôi không muốn so khớp mẫu trên biểu thức chính quy hoặc một số như vậy. Các giá trị khớp thực sự là các giá trị phức tạp.


Câu trả lời:


149

Bạn có thể làm:

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

Lưu ý rằng bạn không thể liên kết các phần của mẫu với tên - hiện tại bạn không thể thực hiện việc này:

code match {
  case Left(x) | Right(x) =>
  case null =>
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.