在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
答案 0 :(得分:2)
在您的示例中,案例类显然是一个更好的主意/设计。 但是,我对元组的一个常用用法通常是在我处理scala maps时,它会大量使用它们。
答案 1 :(得分:0)
案例类可以扩展其他类和特征,而不是扩展Tuple
的类的Product
聚集(参见例如Tuple2)。
在这里的用例中,case类标记了每个成员,这可能导致代码更具可读性,而6-tuple引用(t._1
到t._6
)则相反。
答案 2 :(得分:0)
为中间结果提供这样的数据结构很方便。创建结果类,从API(或公共方法)返回结果,并使用元组作为中间结果,丢弃几行la
此外,它们在集合中有一些很好的用例,例如:
Seq(2,3,4).zipWithIndex.foreach { case (element, index) => println(s"$index:$element") }