Using Extractors with Pattern Matching In Scala
Last Updated :
02 Aug, 2019
Improve
Scala Extractor is defined as an object which has a method named unapply as one of its part. Extractors can be utilized in Pattern Matching. The unapply method will be executed spontaneously, While comparing the Object of an Extractor in Pattern Matching.
Below is the example of Extractor with pattern matching.
Example #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 } |
Output:
5.0 The value is: 1.0
In above example, object name is GFG also we are using unapply method and applying case class with match expression.
Example #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 } |
Output:
30 30 is bigger two times than 15
When comparing an extractor object using the match statement the unapply method will be automatically executed.
Note: A Case class already has an Extractor in it so, it can be utilized spontaneously with Pattern Matching.