Scala Product3
Product3是Scala中的一个特性,它是三个元素的笛卡尔乘积。这里的线性超类型是Product、Equals和Any,这里的已知子类是Tuple3。它扩展了Product这个trait,也就是说。
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
如果两个实例相等,它返回真,否则返回假。
示例 :
// 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的最终案例类。
极客教程