Ar

Arrays in F#

3 Übungen

Über Arrays

Ein array in F# ist eine veränderbare Sammlung von null oder mehr Werten mit fester Länge. Das heißt, sobald ein Array erstellt wurde, kann sich seine Größe nicht mehr ändern, seine Werte aber schon. Alle Werte in einem Array müssen den gleichen Typ haben. Arrays können wie folgt definiert werden:

let empty = [| |]
let emptyAlternative = Array.empty

let singleValue = [| 5 |]
let singleValueAlternative = Array.singleton 5

let threeValues = [| "a"; "b"; "c" |]

Elemente können einem Array zugewiesen oder über einen Index daraus ausgelesen werden. F#-Arrays sind nullbasiert, das heißt, der Index des ersten Elements ist immer null:

let numbers = [| 2; 3; 5 |]

// Update value in array
numbers[2] <- 9

// Read value from array
numbers[2]
// => 9

Arrays werden durch Funktionen und Operatoren bearbeitet, die im Array-Modul definiert sind. Einige dieser Funktionen sind auch als Eigenschaften einer array-Instanz verfügbar:

Array.length [| 7; 8 |] // => 2
[| 7; 8 |].Length       // => 2

Hier gibt es keine richtige oder falsche Option. Im Allgemeinen harmonieren die Funktionen im Array-Modul besser mit der Typinferenz, während die Eigenschaften prägnanteren Code ermöglichen.

Das Array-Muster ermöglicht den Musterabgleich mit Arrays:

let describe array =
    match array with
    | [| |] -> "Empty"
    | [| 1; 2; three |] -> sprintf "1, 2, %d" three
    | _ -> "Other"

describe [| |]         // => "Empty"
describe [| 1; 2; 4 |] // => "1, 2, 4"
describe [| 5; 7; 9 |] // => "Other"

Beim Musterabgleich kannst du einen Wert auch verwerfen. Wenn dir ein Wert in einem bestimmten Fall nicht wichtig ist (du den Wert also nicht verwenden wirst), kannst du einen Unterstrich ('_') verwenden, um das auszudrücken:

let describe array =
    match array with
    | [| |] -> "Empty array"
    | [| x |] -> "Array with one item"
    | [| _; y |] -> "Array with two items (first item ignored)"
    | _ -> "Array with many items (all items ignored)"

describe [| |]          // => "Empty array"
describe [| 1 |]        // => "Array with one item"
describe [| 5; 7 |]     // => "Array with two items (first item ignored)"
describe [| 5; 7; 9 |]  // => "Array with many items (all items ignored)"

Der einzelne '_' sollte beim Musterabgleich immer zuletzt stehen; jeder Wert, der auf keinen der anderen Fälle passt, wird von diesem Fall behandelt.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Arrays

Das Üben ist gesperrt

Schalte 2 weitere Übungen frei, um Arrays zu üben