Der Unterschied besteht darin, dass 'a[][]
ein Array von Arrays darstellt (von möglicherweise unterschiedlichen Längen), während in 'a[,]
, eine rechteckige Anordnung 2D darstellt. Der erste Typ wird auch gezackte Arrays genannt und der zweite Typ heißt mehrdimensionale Arrays. Der Unterschied ist der gleiche wie in C#. Daher sollten Sie sich die C# -Dokumentation für jagged arrays und multidimensional arrays ansehen. Es gibt auch eine hervorragende Dokumentation in der F# WikiBook.
Um dies zu zeigen, ein Bild mit, kann ein Wert vom Typ 'a[][]
wie folgt aussehen:
0 1 2 3 4
5 6
7 8 9 0 1
Während ein Wert vom Typ a[,]
wird immer ein Rechteck sein und wie dies zum Beispiel aussehen:
0 1 2 3
4 5 6 7
8 9 0 1
Um eine einzelne „Linie“ eines mehrdimensionalen Arrays zu erhalten, können Sie die Slice-Notation:
let array1d = array2d.[0..0,0..9];;
Scheiben tatsächlich mehrdimensionales Array zurück (in diesem Fall mit einer Dimension gleich 1), so dass man eine Konvertierungsfunktion, die wie folgt 'a[]
kehrt schreiben kann:
let toArray (arr:_[,]) =
Array.init arr.Length (fun i -> arr.[0, i])
let array1d = array2d.[0..0,0..9] |> toArray;;