F# - 将Jagged数组转换为Array2D

mat*_*kus 3 f# jagged-arrays multidimensional-array

@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] |]
    |]
Run Code Online (Sandbox Code Playgroud)

从2D数组转换为锯齿状数组.是否有可用的等效函数(toArray2D)用于从锯齿状数组转换为2D数组(假设锯齿状数组中的每一行具有相同数量的元素)?

Tom*_*cek 6

有一个内置函数array2D可以完成这个:

array2D 
  [| [| 1; 2 |]
     [| 3; 4 |] |]
Run Code Online (Sandbox Code Playgroud)

该array2D函数有一个类型,seq<#seq<'T>> -> 'T[,]因此它更通用 - 它可以将任何值序列序列转换为2D数组,但由于锯齿状数组是一系列序列,这就是您所需要的.请注意,如果嵌套数组的长度不同,则会抛出此异常.