Latest web development tutorials

Scala coincidencia de patrones

Scala proporciona un poderoso mecanismo de patrón de juego, es también ampliamente utilizado.

Una coincidencia de patrones contiene una serie de alternativas, cada una de ellas comienza con uncaso de palabras clave.Cada uno contiene una opción de copia de seguridad y un patrón a una pluralidad de expresiones. Símbolo de la flecha=> separa los patrones y expresiones.

El siguiente es un valor entero patrón simple juego Ejemplo:

object Test {
   def main(args: Array[String]) {
      println(matchTest(3))

   }
   def matchTest(x: Int): String = x match {
      case 1 => "one"
      case 2 => "two"
      case _ => "many"
   }
}

Aplicación del código anterior, la salida es:

$ scalac Test.scala 
$ scala Test
many

coincidir con el de Java correspondiente en el interruptor, pero escrito después de la expresión del selector.A saber: partido selector {} alternativas.

Por orden de expresiones para que coincida con el código escrito para tratar cada modo para completar el cálculo, si encuentran que hay un caso de coincidencia, que coincida con el resto del caso no continuará.

A continuación nos fijamos en un tipo de datos diferente de coincidencia de patrones:

object Test {
   def main(args: Array[String]) {
      println(matchTest("two"))
      println(matchTest("test"))
      println(matchTest(1))
      println(matchTest(6))

   }
   def matchTest(x: Any): Any = x match {
      case 1 => "one"
      case "two" => 2
      case y: Int => "scala.Int"
      case _ => "many"
   }
}

Aplicación del código anterior, la salida es:

$ scalac Test.scala 
$ scala Test
2
many
one
scala.Int

Ejemplos del primer caso corresponde a un valor entero de 1, el segundo caso se corresponde con el valor de cadena de dos, el segundo caso se corresponde con el valor de cadena de dos, el tercer caso se corresponde con el tipo de modelo utilizado para determinar si el valor pasado en su totalidad tipo, uso isInstanceOf comparación para determinar el tipo, la coincidencia de patrones es mejor. El cuarto caso indica las alternativas-partido completo por defecto, ese partido no se encuentra en el otro partido, un cambio similar en default.


Use clase de ejemplo

Utilice el estuche de la palabra clave es la definición de clase es una clase de muestra (clases de casos), la clase de ejemplo es una clase especial, optimizado para la coincidencia de patrones.

El siguiente es un ejemplo sencillo de una clase de muestra:

object Test {
   def main(args: Array[String]) {
   	val alice = new Person("Alice", 25)
	val bob = new Person("Bob", 32)
   	val charlie = new Person("Charlie", 32)
   
    for (person <- List(alice, bob, charlie)) {
    	person match {
            case Person("Alice", 25) => println("Hi Alice!")
            case Person("Bob", 32) => println("Hi Bob!")
            case Person(name, age) =>
               println("Age: " + age + " year, name: " + name + "?")
         }
      }
   }
   // 样例类
   case class Person(name: String, age: Int)
}

Aplicación del código anterior, la salida es:

$ scalac Test.scala 
$ scala Test
Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?

Cuando se declara una clase de ejemplo, el siguiente procedimiento se produce de forma automática:

  • Cada constructor de parámetro se están convirtiendo en val, salvo que se manifieste explícitamente como var, pero eso no es recomendable;
  • Proporcionar aplicar métodos de objetos asociados, para que pueda construir objetos no pueden utilizar la nueva palabra clave;
  • método de cancelar la aplicación proporcionada permite la coincidencia de patrones puede trabajar;
  • Generar toString, es igual, hashCode y copiar método, a no ser que la pantalla muestra las definiciones de esos métodos.