📜  斯卡拉 |产品3

📅  最后修改于: 2022-05-13 01:55:26.967000             🧑  作者: Mango

斯卡拉 |产品3

Product3是 Scala 中的一个特征,它是三个元素的笛卡尔积。这里的线性超类型是ProductEqualsAny ,这里已知的子类是Tuple3 。它扩展了产品特性,即

trait Product3[+T1, +T2, +T3] extends Product

其中,T1、T2 和 T3 是 Scala 使用的参数类型。

  1. 抽象值成员
    这里的抽象值成员是:
    • abstract def _1: T1

      它返回第一个参数类型的元素。

    • abstract def _2: T2

      它返回第二个参数类型的元素。

    • abstract def _3: T3

      它返回第三个参数类型的元素。

    • abstract def canEqual(that: Any): Boolean

      如果两个实例相等则返回 true,否则返回 false。

    例子 :

    // 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)
                  
        }
    }
    
    输出:
    GeeksforGeeks
    32
    43.0
    

    在这里,我们使用了抽象值成员来访问元素。

  2. 具体值成员
    这里的具体值成员是:
    • def productArity: Int

      它返回 Product3 特征中的参数数量。

    • def productElement(n: Int): Any

      它返回第 n 个元素。

    • def productIterator: Iterator[Any]

      它默认返回一个迭代器。

    • def productPrefix: String

      它默认返回空字符串。

    例子 :

    // 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)
                  
        }
    }
    
    输出:
    3
    a
    Tuple3
    

    在这里,productPrefix 将返回 Tuple3,因为 Tuple3 是扩展 Product3 的最终案例类。