Scala - 元组的用例?

时间:2015-05-21 06:36:35

标签: scala

在Scala中,元组的用例是什么?特别是为什么我会使用元组而不是创建案例类?

例如

type Average = Double
type Median = Double
type Quantile = Double
type Min = Double
type Max = Double
type StdDev = Double

def stats(times: Seq[Int]): (Average, Median, Quantile, Min, Max, StdDev)

VS

case class StatResults(average: Double, median: Double, quantile: Double, min: Double, max: Double, stdDev: Double)

def stats(times: Seq[Int]): StatResults

3 个答案:

答案 0 :(得分:2)

在您的示例中,案例类显然是一个更好的主意/设计。 但是,我对元组的一个常用用法通常是在我处理scala maps时,它会大量使用它们。

答案 1 :(得分:0)

案例类可以扩展其他类和特征,而不是扩展Tuple的类的Product聚集(参见例如Tuple2)。

在这里的用例中,case类标记了每个成员,这可能导致代码更具可读性,而6-tuple引用(t._1t._6)则相反。

答案 2 :(得分:0)

为中间结果提供这样的数据结构很方便。创建结果类,从API(或公共方法)返回结果,并使用元组作为中间结果,丢弃几行la

此外,它们在集合中有一些很好的用例,例如:

Seq(2,3,4).zipWithIndex.foreach { case (element, index) => println(s"$index:$element") }