我有以下类型的数组
let myarray = [| 1 .. 5 |]
我想得到另一个数组,其中每个元素都是它之前的元素的累积总和:
let mycumarray = [| 1 3 6.. 15 |]
我试图做的是:
let sumArray array = Array.fold (fun acc elem -> acc + elem) 0.0 array
let mycumarray = sumArray myarray
但是它不起作用。有人对获得累计金额有什么建议吗?
最佳答案
我认为您正在寻找 Array.scan
,这与 Array.fold
非常相似,但返回所有状态值,而不仅仅是最后一个:
(Array.scan (+) 0 myArray).[1..]
.[1..]
是数组切片器符号( see the MSDN on arrays in F# )来删除第一个元素,这是必要的,因为 scan
在输出中包含初始状态。
关于f# - 在 F# 中使用 array.fold 的累积总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004927/