F# Multidimensional Array Types

后端 未结 2 1112
太阳男子
太阳男子 2020-12-30 03:35

What\'s the difference between \'a[,,] and \'a[][][]? They both represent 3-d arrays. It makes me write array3d.[x].[y].[z] instead of

2条回答
  •  粉色の甜心
    2020-12-30 03:45

    The difference is that 'a[][] represents an array of arrays (of possibly different lengths), while in 'a[,], represents a rectangular 2D array. The first type is also called jagged arrays and the second type is called multidimensional arrays. The difference is the same as in C#, so you may want to look at the C# documentation for jagged arrays and multidimensional arrays. There is also an excelent documentation in the F# WikiBook.

    To demonstrate this using a picture, a value of type 'a[][] can look like this:

    0 1 2 3 4
    5 6
    7 8 9 0 1
    

    While a value of type a[,] will always be a rectangle and may look for example like this:

    0 1 2 3
    4 5 6 7
    8 9 0 1
    

    To get a single "line" of a multidimensional array, you can use the slice notation:

    let row = array2d.[0,*];;
    

    See https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/arrays#array-slicing-and-multidimensional-arrays

提交回复
热议问题