F#多维数组类型
F#多维数组类型,f#,multidimensional-array,F#,Multidimensional Array,'a[,]和'a[][]之间有什么区别?它们都表示三维阵列。 它让我写array3d.[x].[y].[z]而不是array3d.[x,y,z] 为什么我不能做到以下几点 > let array2d : int[,] = Array2D.zeroCreate 10 10;; > let array1d = array2d.[0];; error FS0001: This expression was expected to have type 'a [] but h
'a[,]
和'a[][]
之间有什么区别?它们都表示三维阵列。
它让我写array3d.[x].[y].[z]
而不是array3d.[x,y,z]
为什么我不能做到以下几点
> let array2d : int[,] = Array2D.zeroCreate 10 10;;
> let array1d = array2d.[0];;
error FS0001: This expression was expected to have type
'a []
but here has type
int [,]
不同之处在于,
'a[][]
表示数组数组(长度可能不同),而在'a[,]
中,表示矩形二维数组。第一种类型也称为交错数组,第二种类型称为多维数组。区别与C#中的相同,因此您可能需要查看和的C#文档。中还有一个优秀的文档
要使用图片演示这一点,类型为'a[][]
的值可以如下所示:
0 1 2 3 4
5 6
7 8 9 0 1
0 1 2 3
4 5 6 7
8 9 0 1
而a[,]
类型的值将始终是一个矩形,例如可能看起来如下:
0 1 2 3 4
5 6
7 8 9 0 1
0 1 2 3
4 5 6 7
8 9 0 1
要获得多维数组的单个“行”,可以使用切片表示法: 从F#3.1(2013)开始,情况更简单: 从F#3.1开始,您可以将多维数组分解为相同或更低维的子数组。例如,可以通过指定单行或列从矩阵中获取向量
// Get row 3 from a matrix as a vector:
matrix.[3, *]
// Get column 3 from a matrix as a vector:
matrix.[*, 3]
看