0

我是 Scala 的新手,需要一些关于如何组合过滤器和对元组列表求和的帮助。

我需要的是过滤后的元组列表的整数之和,它基本上是问题的答案:

所有设定权重的总和是多少?

以下示例列表的结果应为 20

该列表非常简单:

     val ln = List( ("durationWeight" , true, 10),
                    ("seasonWeight"   , true, 10),
                    ("regionWeight"   , false, 5),
                     ("otherWeight"   , false, 5)

根据布尔标志过滤列表很简单:

     val filtered = ln.filter { case(name, check, value) => check == true  }

它返回了我想要的元组。获得所有它们的总和似乎可以使用地图,然后是总和:

  val b = filtered.map{case((name, check, value) ) => value}.sum

这返回了我想要的所有设定权重的总和。

但是,我如何一步结合过滤器、映射和求和来完成所有这些工作,最好是在一个优雅的单列中?

谢谢你的帮助。

4

2 回答 2

5
ln.collect{ case (_, true, value) => value }.sum
于 2013-01-03T03:34:27.883 回答
1

另一种解决方法:

(0 /: ln)((sum,x) => if (x._2) sum + x._3 else sum)
于 2013-01-03T03:48:15.940 回答