Scala | Product3

Last Updated : 13 May, 2019
Product3 is a trait in Scala, which is a Cartesian product of three elements. The Linear Supertypes here are Product, Equals, and Any and the known subclass here is Tuple3. It extends the trait Product i.e,
trait Product3[+T1, +T2, +T3] extends Product
Where, T1, T2, and T3 are the used parameter types of the Scala.
  1. Abstract Value Members The abstract value members here are:
    • abstract def _1: T1
      It returns the elements of the first parameter type.
    • abstract def _2: T2
      It returns the elements of the second parameter type.
    • abstract def _3: T3
      It returns the elements of the third parameter type.
    • abstract def canEqual(that: Any): Boolean
      It returns true if two instances are equal else returns false.
    Example : Scala
    // Scala program of a trait
    // Product3
    
    // Creating an object
    object GfG
    {
    
        // Main method
        def main(args: Array[String]) 
        {
        
            // Applying Produt3 trait
            // and assigning values
            val x: Product3[String, Int, Double] =
            {
                ("GeeksforGeeks", 32, 43)
            }
            // Displays the first element
            println(x._1)
        
            // Displays the second element
            println(x._2)
        
            // Displays the third element
            println(x._3)
                
        }
    }
    
    Output:
    GeeksforGeeks
    32
    43.0
    
    Here, we have utilized abstract value members for accessing the elements.
  2. Concrete Value Members The concrete value members here are:
    • def productArity: Int
      It returns the number of parameters in Product3 trait.
    • def productElement(n: Int): Any
      It returns nth element.
    • def productIterator: Iterator[Any]
      It returns an iterator by default.
    • def productPrefix: String
      It returns the empty string by default.
    Example : Scala
    // Scala program of a trait
    // Product3 for concrete 
    // value members
    
    // Creating an object
    object GfG
    {
    
        // Main method
        def main(args: Array[String]) 
        {
        
            // Applying Product3 trait
            // and assigning values
            val x: Product3[String, Char, Int] =
            {
                ("GeeksforGeeks", 'a', 43)
            }
            
            // Displays number of elements
            println(x.productArity)
        
            // Displays nth element
            println(x.productElement(1))
        
            // Displays prefix of the trait
            println(x.productPrefix)
                
        }
    }
    
    Output:
    3
    a
    Tuple3
    
    Here, productPrefix will return Tuple3 as Tuple3 is a final case class that extents Product3.
Comment

Explore