在元组列表上的foldLeft:奇怪的意外结果

问题描述 投票:1回答:1

我有一个元组列表,我想要总结哪些元素:

val t = Seq(1,2,3,4,5).map(el => (el,1))
t: Seq[(Int, Int)] = List((1,1), (2,1), (3,1), (4,1), (5,1))

t.foldLeft(0,0){ case ((a,b),(c,d)) => (a+b,c+d)}
res3: (Int, Int) = (14,6)

答案(14,6)确实出乎意料(预计一个是(15,5))。

让我更加困惑的是:

t.foldLeft(0,1){ case ((a,b),(c,d)) => (a+b,c+d)}
res3: (Int, Int) = (15,6)

我的问题是foldLeft(x,y)中的参数对应于什么(它们是第1和第2折叠的起始参数?)以及如何在元组的第1和第2个元素上获得所需的总和。

scala foldleft
1个回答
7
投票

您的折叠功能有误。您的累加器位于(a,b)中,元素位于(c,d)中。总结你应该返回(a + c,b + d)

© www.soinside.com 2019 - 2024. All rights reserved.