F # - конвертировать неровный массив в Array2D - PullRequest
0 голосов
/ 25 мая 2018

@ 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] |]
    |]

, которая преобразует 2D-массив в зубчатый массив.Доступна ли эквивалентная функция ( toArray2D ) для преобразования из зубчатого массива в двумерный массив (при условии, что каждая строка в зубчатом массиве имеет одинаковое количество элементов)?

1 Ответ

0 голосов
/ 25 мая 2018

Существует встроенная функция array2D, которая делает именно это:

array2D 
  [| [| 1; 2 |]
     [| 3; 4 |] |]

Функция array2D имеет тип seq<#seq<'T>> -> 'T[,], поэтому она более общая - она ​​может преобразовывать любую последовательностьпоследовательности значений в двумерном массиве, но поскольку зубчатый массив является последовательностью последовательностей, это все, что вам нужно.Обратите внимание, что это выдает, если ваши вложенные массивы имеют разную длину.

...