Тип float[,]
представляет двумерный массив. Вы можете работать с ним, используя функции из модуля Array2D
, и вы можете получить доступ к элементам, указав два индекса (например, arr.[0, 0]
). Массив должен быть регулярным (прямоугольник), поэтому вы также можете использовать нарезку, потому что все значения в прямоугольнике определены.
> let arr2d = array2D [ [1 .. 3]; [4 .. 6] ];;
val arr2d : int [,] = [[1; 2; 3]
[4; 5; 6]]
> arr2d.[1,1];;
val it : int = 5
Тип float[][]
, который вы получили во втором случае, - это одномерный массив, содержащий одномерные массивы float
. Чтобы получить доступ к элементу, сначала необходимо указать индекс первого массива, а затем выбрать элемент в возвращаемом массиве:
> let arrOfArr = [| [| 1 .. 3 |]; [| 0 |] |];;
val arrOfArr : int [] [] = [|[|1; 2; 3|]; [|0|]|]
> arrOfArr.[0].[1];;
val it : int = 2
Как показывает этот пример, тип float[][]
не обязательно должен представлять прямоугольный массив, поскольку отдельные массивы могут иметь разную длину (то есть 3 и 1 в вышеприведенном примере). По этой причине вы не можете использовать нарезку для доступа к ее элементам.
Если у вас есть массив типа float[][]
, вы можете преобразовать его в float[,]
, используя функцию array2D
. Функция не будет работать, если массив не прямоугольный.