【发布时间】:2012-07-26 16:55:34
【问题描述】:
我多次遇到过在整个地图操作中维护状态的问题。想象一下以下任务:
给定一个 List[Int],将每个元素映射到所有前面元素的总和及其自身。
所以 1,2,3 变成 1, 1+2, 1+2+3。
我想出的一个解决方案是:
scala> val a = 1 to 5
a: scala.collection.immutable.Range.Inclusive with scala.collection.immutable.Range.ByOne = Range(1, 2, 3, 4, 5)
scala> a.foldLeft(List(0)){ case (l,i) => (l.head + i) :: l }.reverse
res3: List[Int] = List(0, 1, 3, 6, 10, 15)
但不知何故,我觉得必须有一个更简单的解决方案。
【问题讨论】:
标签: scala functional-programming