F# - 将锯齿数组转换为二维数组

5

@scrwtp提供了一个非常有用的函数(toJagged):

let toJagged<'a> (arr: 'a[,]) : 'a [][] = 
    [| for x in 0 .. Array2D.length1 arr - 1 do
           yield [| for y in 0 .. Array2D.length2 arr - 1 -> arr.[x, y] |]
    |]

有一个将二维数组转换为锯齿数组的函数。是否有相应的函数可用( toArray2D )以将锯齿数组转换为二维数组(假设锯齿数组中每一行具有相同数量的元素)?

1个回答

10

有一个内置函数array2D可以完美地实现这个功能:

array2D 
  [| [| 1; 2 |]
     [| 3; 4 |] |]
array2D函数的类型是seq<#seq<'T>> -> 'T[,],因此它更加通用——它可以将任何值序列的序列转换为2D数组,但由于锯齿状数组实际上是一个序列的序列,所以这就是你需要的所有内容。请注意,如果嵌套数组的长度不同,则会引发异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接