我有一个类如何使用Scala中的对象列表中的对象值创建求和变量?
class Test(val first: Int, val second: Int, val third: Int)
类测试可以具有比第一其他属性,第二和第三。
而且我有一个列表:
val list: List[Test] = List(new Test(0,1,2), new Test(1,14,2), new Test(7,15,2))
我将如何使用foldLeft此处添加所有first`s,第二我们一起,第三个是连同变量结束:
allFirsts = 8
allSeconds = 30
allThirds = 6
我已经有这样的事情摸索出:
val (totalFirsts, totalSeconds, totalThirds) = list.foldLeft(0, 0, 0){ (sum, l) => (sum._1 + l.first , sum._2 + l.second, sum._3 + l.third) }
这似乎很好地工作,但我不喜欢_1,_2,_3的可读性。也许我可以在这里使用case
分解值,但我不确定如何使它们一起工作。
我会反对这个解决方案的唯一原因是因为类Test可能具有除第一,第二和第三的其他属性,我不想担心实例化。 – NiceOneMoney
case类不一定与'Test'类相同。定义另一个只有三个字段的案例类。 * Test1 *例如。 – Psidom