Mặc dù tất cả các câu trả lời trên và dưới đây trả lời hoàn hảo câu hỏi ban đầu, một số thông tin bổ sung có thể được tìm thấy trong tài liệu https://docs.scala-lang.org/tour/potype-matching.html , chúng không phù hợp với trường hợp của tôi nhưng vì câu trả lời stackoverflow này là gợi ý đầu tiên trong Google nên tôi muốn đăng câu trả lời của mình, đây là một trường hợp góc của câu hỏi ở trên.
Câu hỏi của tôi là:
- Làm thế nào để sử dụng một bộ bảo vệ trong biểu thức khớp với một đối số của hàm?
Mà có thể được diễn giải:
- Làm thế nào để sử dụng một câu lệnh if trong biểu thức khớp với một đối số của hàm?
Câu trả lời là ví dụ mã dưới đây:
def drop[A](l: List[A], n: Int): List[A] = l match {
case Nil => sys.error("drop on empty list")
case xs if n <= 0 => xs
case _ :: xs => drop(xs, n-1)
}
liên kết đến scala fiddle: https://scalafiddle.io/sf/G37THif/2
vì bạn có thể thấy case xs if n <= 0 => xs
câu lệnh có thể sử dụng n (đối số của hàm) với câu lệnh Guard (if).
Tôi hy vọng điều này sẽ giúp một người như tôi.
case x if x.size > 2 => ...