Si bien todas las respuestas anteriores y siguientes responden perfectamente a la pregunta original, se puede encontrar información adicional en la documentación https://docs.scala-lang.org/tour/pattern-matching.html , no encajaron en mi caso pero debido a que esta respuesta de stackoverflow es la primera sugerencia en Google, me gustaría publicar mi respuesta, que es un caso de la pregunta anterior.
Mi pregunta es:
- ¿Cómo usar un protector en la expresión de coincidencia con un argumento de una función?
Que se puede parafrasear:
- ¿Cómo usar una declaración if en expresión de coincidencia con un argumento de una función?
La respuesta es el siguiente código de ejemplo:
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)
}
enlace al scala fiddle: https://scalafiddle.io/sf/G37THif/2
como puede ver, la case xs if n <= 0 => xs
declaración puede usar n (argumento de una función) con la declaración de guardia (if).
Espero que esto ayude a alguien como yo.
case x if x.size > 2 => ...