Haskell有一个函数accumArray
函数,它通过一个键对2元组进行分组,然后用相同的键减少值。斯卡拉没有一个,似乎有一个在斯卡拉,但依赖于许多其他斯卡拉特征。 有没有更好的方式在scala中编写accumArray? 详细的这一功能在Haskell这里:http://zvon.org/other/haskell/Outputarray/accumArray_f.htmlhaskell accumArra在scala中相当于?
下面是我的实现。谢谢。
private def accumArray[A <% Ordered[A], B, C](f: (B, C) => B,
base: B,
bounds: (A, A),
ll: List[(A, C)]): Vector[(A, B)] = {
ll.filter(i => i._1 >= bounds._1 && i._1 <= bounds._2).
groupBy(_._1).
map(e =>
e._1 -> e._2.map(_._2).foldLeft(base)(f)
).
toVector
}
应该在http://codereview.stackexchange.com – luqui 2013-02-08 22:00:29