Yukarıdaki ve körüklü yanıtların tümü orijinal soruyu mükemmel bir şekilde cevaplasa da, https://docs.scala-lang.org/tour/pattern-matching.html belgelerinde bazı ek bilgiler bulunabilir , bunlar benim durumuma uymadılar ancak bu yığın akışı cevabı Google'daki ilk öneri olduğundan, yukarıdaki sorunun köşe örneği olan cevabımı göndermek istiyorum.
Sorum şu:
- Bir görev argümanı ile maç ifadesinde bir koruma nasıl kullanılır?
Hangi başka kelimelerle ifade edilebilir:
- Eşleşme ifadesinde bir işlev argümanı ile bir if ifadesi nasıl kullanılır?
Cevap aşağıdaki kod örneğidir:
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)
}
scala fiddle bağlantısı: https://scalafiddle.io/sf/G37THif/2case xs if n <= 0 => xs
ifadesini
görebileceğiniz gibi guard (if) ifadesiyle n (bir işlev argümanı) kullanabiliyor.
Umarım bu benim gibi birine yardımcı olur.
case x if x.size > 2 => ...