我有一個類如何使用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