Scala Extractor se define como un objeto que tiene un método llamado desaplicar como una de sus partes. Los extractores se pueden utilizar en Pattern Matching . El método de no aplicar se ejecutará espontáneamente, mientras se compara el objeto de un extractor en la coincidencia de patrones.
A continuación se muestra el ejemplo de Extractor con coincidencia de patrones.
Ejemplo 1:
// Scala program of extractors // with pattern matching // Creating object object GfG { // Main method def main(args: Array[String]) { // Assigning value to the // object val x = GfG(25) // Displays output of the // Apply method println(x) // Applying pattern matching x match { // unapply method is called case GfG(y) => println("The value is: "+y) case _ => println("Can't be evaluated") } } // Defining apply method def apply(x: Double) = x / 5 // Defining unapply method def unapply(z: Double): Option[Double] = if (z % 5 == 0) { Some(z/5) } else None }
5.0 The value is: 1.0
En el ejemplo anterior, el nombre del objeto es GFG y también estamos usando el método de no aplicación y aplicando la clase de caso con la expresión de coincidencia.
Ejemplo #2:
// Scala program of extractors // with pattern matching // Creating object object GFG { // Main method def main(args: Array[String]) { val x = GFG(15) println(x) x match { case GFG(num) => println(x + " is bigger two times than " + num) // Unapply is invoked case _ => println("not calculated") } } def apply(x: Int) = x * 2 def unapply(z: Int): Option[Int] = if (z % 2 == 0) Some(z/2) else None }
30 30 is bigger two times than 15
Al comparar un objeto extractor usando la declaración de coincidencia, el método de no aplicación se ejecutará automáticamente.
Nota: una clase de caso ya tiene un extractor, por lo que se puede utilizar espontáneamente con la coincidencia de patrones.
Publicación traducida automáticamente
Artículo escrito por DivyaPareek y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA