Embora todas as respostas acima e abaixo respondam perfeitamente à pergunta original, algumas informações adicionais podem ser encontradas na documentação https://docs.scala-lang.org/tour/pattern-matching.html , mas não se encaixam no meu caso mas como essa resposta do stackoverflow é a primeira sugestão no Google, eu gostaria de postar minha resposta, que é o caso principal da pergunta acima.
Minha pergunta é:
- Como usar um guarda na expressão de correspondência com um argumento de uma função?
Que pode ser parafraseado:
- Como usar uma instrução if na expressão de correspondência com um argumento de uma função?
A resposta é o exemplo de código abaixo:
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)
}
link para o scala fiddle: https://scalafiddle.io/sf/G37THif/2,
como você pode ver, a case xs if n <= 0 => xs
instrução é capaz de usar n (argumento de uma função) com a instrução guard (if).
Espero que isso ajude alguém como eu.
case x if x.size > 2 => ...