Using Extractors with Pattern Matching In Scala

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


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.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.