我刚刚讨论了一个在Array2D上使用fold/foldi方法很有用的情况,我想知道,如果有原因,为什么Array2D没有它们.
由于我的array2d非常庞大,我不想先将它转换为其他格式.
它只是一个罕见的用例,还是有技术原因,为什么没有添加这些方法?或者有没有办法实现相同而不触及数组中的数据(如移动它)?
我认为在标准Array2D模块中使用此功能非常有用.您可以为Visual F#存储库打开一个问题并帮助我们添加它:-).
除了@scrwtp编写的内容之外,您还可以使用更直接的可变实现.对于像这样的基本功能,我认为使用变异是好的,它会更快一点:
let foldi (folder: int -> int -> 'S -> 'T -> 'S) (state: 'S) (array: 'T[,]) =
let mutable state = state
for x in 0 .. Array2D.length1 array - 1 do
for y in 0 .. Array2D.length2 array - 1 do
state <- folder x y state (array.[x, y])
state
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |