我正在尝试创建一个函数来获取以前的值列表。我在下面的函数中有一种非常优雅的方式,但它使用了一个可变的currValue。我试图避免在地图之外有这个var。
我的功能是:
def getSummedList(list: List[Int]) = {
var currValue = 0
val newList = list.map {v=>
currValue += v
currValue
}
newList
}
答案 0 :(得分:4)
您可以使用scan
:
def getSummedList(list: List[Int]) = list.scan(0) ( _ + _ ).tail
扫描与fold
类似,但保留每个中间结果。我们采用tail
去掉第一个零元素。