斯卡拉 |产品3
Product3是 Scala 中的一个特征,它是三个元素的笛卡尔积。这里的线性超类型是Product 、 Equals和Any ,这里已知的子类是Tuple3 。它扩展了产品特性,即
trait Product3[+T1, +T2, +T3] extends Product
其中,T1、T2 和 T3 是 Scala 使用的参数类型。
- 抽象值成员
这里的抽象值成员是: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
在这里,我们使用了抽象值成员来访问元素。
- 具体值成员
这里的具体值成员是: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 的最终案例类。