元组列表上的 foldLeft:奇怪的意外结果
foldLeft on List of Tuples: strange unexpected results
我有一个元组列表,我想对哪些元素求和:
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 个元素上获得所需的总和。
您的折叠功能有误。您的累加器在 (a,b) 中,元素在 (c,d) 中。为了总结你应该 return (a+c, b+d)
我有一个元组列表,我想对哪些元素求和:
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 个元素上获得所需的总和。
您的折叠功能有误。您的累加器在 (a,b) 中,元素在 (c,d) 中。为了总结你应该 return (a+c, b+d)