Sementara semua jawaban di atas dan di bawah dengan sempurna menjawab pertanyaan asli, beberapa informasi tambahan dapat ditemukan dalam dokumentasi https://docs.scala-lang.org/tour/pattern-matching.html , mereka tidak cocok dengan kasus saya tetapi karena jawaban stackoverflow ini adalah saran pertama di Google saya ingin memposting jawaban saya yang merupakan kasus sudut pertanyaan di atas.
Pertanyaanku adalah:
- Bagaimana cara menggunakan penjaga dalam ekspresi kecocokan dengan argumen fungsi?
Yang dapat diparafrasekan:
- Bagaimana cara menggunakan pernyataan if dalam pencocokan ekspresi dengan argumen fungsi?
Jawabannya adalah contoh kode di bawah ini:
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)
}
tautan ke scala fiddle: https://scalafiddle.io/sf/G37THif/2
karena Anda dapat melihat case xs if n <= 0 => xs
pernyataan tersebut dapat menggunakan n (argumen fungsi) dengan pernyataan penjaga (jika).
Saya harap ini membantu orang seperti saya.
case x if x.size > 2 => ...