Scala Language Coincidencia de patrón simple


Ejemplo

Este ejemplo muestra cómo hacer coincidir una entrada con varios valores:

def f(x: Int): String = x match {
  case 1 => "One"
  case 2 => "Two"
  case _ => "Unknown!"
}

f(2)  // "Two"
f(3)  // "Unknown!"

Demo en vivo

Nota: _ es la caída a través o por defecto caso, pero no es necesario.

def g(x: Int): String = x match {
  case 1 => "One"
  case 2 => "Two"
}

g(1)  // "One"
g(3)  // throws a MatchError

Para evitar lanzar una excepción, es una mejor práctica de programación funcional aquí manejar el caso predeterminado ( case _ => <do something> ). Tenga en cuenta que hacer coincidir una clase de caso puede ayudar al compilador a producir una advertencia si falta un caso. Lo mismo ocurre con los tipos definidos por el usuario que extienden un rasgo sellado. Si la coincidencia es total, puede que no sea necesario un caso predeterminado

También es posible hacer coincidencias con valores que no están definidos en línea. Estos deben ser identificadores estables , que se obtienen utilizando un nombre en mayúscula o encerrando backticks.

Con One y two definidos en otro lugar, o pasados ​​como parámetros de función:

val One: Int = 1
val two: Int = 2

Se pueden emparejar contra de la siguiente manera:

def g(x: Int): String = x match {
  case One => "One"
  case `two` => "Two"
}

A diferencia de otros lenguajes de programación como Java, por ejemplo, no hay caída. Si un bloque de caso coincide con una entrada, se ejecuta y se completa la coincidencia. Por lo tanto, el caso menos específico debería ser el último bloque de caso.

def f(x: Int): String = x match {
  case _ => "Default"
  case 1 => "One"
}

f(5) // "Default"
f(1) // "Default"