Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Schleifenkonstrukt wird verwendet, um die Übereinstimmungen eines Musters in einer aufzählbaren Auflistung zu durchlaufen, z. B. einen Bereichsausdruck, eine Sequenz, eine Liste, ein Array oder ein anderes Konstrukt, das die Enumeration unterstützt.
Syntax
for pattern in enumerable-expression do
body-expression
Bemerkungen
Der for...in Ausdruck kann mit der for each Anweisung in anderen .NET-Sprachen verglichen werden, da er zum Durchlaufen der Werte in einer enumerationsfähigen Auflistung verwendet wird.
for...in Unterstützt jedoch auch den Musterabgleich über die Auflistung, anstatt nur die Iteration über die gesamte Auflistung zu durchlaufen.
Der aufzählbare Ausdruck kann als aufzählbare Auflistung oder mithilfe des .. Operators angegeben werden. Aufzählbare Auflistungen umfassen Listen, Sequenzen, Arrays, Sets, Karten usw. Jeder typ, der implementiert System.Collections.IEnumerable wird, kann verwendet werden.
Wenn Sie einen Bereich mithilfe des .. Operators ausdrücken, können Sie die folgende Syntax verwenden.
start .. beenden
Sie können auch eine Version verwenden, die einen Inkrement namens Skip enthält, wie im folgenden Code.
start .. skip .. beenden
Wenn der Skip-Wert nicht angegeben ist, wird der nächste in der Auflistung generierte Wert um 1 erhöht. Wenn "Überspringen" angegeben wird, wird er um diesen Wert erhöht.
Werte, die im Muster übereinstimmen, können auch im Textkörperausdruck verwendet werden.
Die folgenden Codebeispiele veranschaulichen die Verwendung des for...in Ausdrucks.
// Looping over a list.
let list1 = [ 1; 5; 100; 450; 788 ]
for i in list1 do
printfn "%d" i
Die Ausgabe lautet wie folgt.
1
5
100
450
788
Das folgende Beispiel zeigt, wie Sie eine Schleife über eine Sequenz ausführen und wie Sie ein Tupelmuster anstelle einer einfachen Variablen verwenden. In diesem Beispiel verwendet der Sequenzausdruck den -> Operator, der in Sequenzausdrücken und anderen Berechnungsausdrücken kurz ist do yield . Mit dem -> Operator können Sie einen Ausdruck angeben, dessen Wert Teil der Sequenz wird. Weitere Informationen finden Sie unter Sequenzen und Berechnungsausdrücke.
let seq1 = seq { for i in 1 .. 10 -> (i, i*i) }
for (a, asqr) in seq1 do
printfn "%d squared is %d" a asqr
Die Ausgabe lautet wie folgt.
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16
5 squared is 25
6 squared is 36
7 squared is 49
8 squared is 64
9 squared is 81
10 squared is 100
Das folgende Beispiel zeigt, wie Sie einen einfachen ganzzahligen Bereich durchlaufen.
let function1() =
for i in 1 .. 10 do
printf "%d " i
printfn ""
function1()
Die Ausgabe von Funktion1 lautet wie folgt.
1 2 3 4 5 6 7 8 9 10
Das folgende Beispiel zeigt, wie Sie einen Bereich mit einem Überspringen von 2 durchlaufen, der alle anderen Elemente des Bereichs enthält.
let function2() =
for i in 1 .. 2 .. 10 do
printf "%d " i
printfn ""
function2()
Die Ausgabe lautet function2 wie folgt.
1 3 5 7 9
Das folgende Beispiel zeigt, wie sie einen Zeichenbereich verwenden.
let function3() =
for c in 'a' .. 'z' do
printf "%c " c
printfn ""
function3()
Die Ausgabe lautet function3 wie folgt.
a b c d e f g h i j k l m n o p q r s t u v w x y z
Das folgende Beispiel zeigt, wie Ein negativer Skip-Wert für eine Reverse iteration verwendet wird.
let function4() =
for i in 10 .. -1 .. 1 do
printf "%d " i
printfn " ... Lift off!"
function4()
Die Ausgabe lautet function4 wie folgt.
10 9 8 7 6 5 4 3 2 1 ... Lift off!
Der Anfang und das Ende des Bereichs können auch Ausdrücke sein, z. B. Funktionen, wie im folgenden Code.
let beginning x y = x - 2*y
let ending x y = x + 2*y
let function5 x y =
for i in (beginning x y) .. (ending x y) do
printf "%d " i
printfn ""
function5 10 4
Die Ausgabe dieser function5 Eingabe lautet wie folgt.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Das nächste Beispiel zeigt die Verwendung eines Wildcardzeichens (_), wenn das Element in der Schleife nicht benötigt wird.
let mutable count = 0
for _ in list1 do
count <- count + 1
printfn "Number of elements in list1: %d" count
Die Ausgabe lautet wie folgt.
Number of elements in list1: 5
Note Sie können in Sequenzausdrücken und anderen Berechnungsausdrücken verwenden for...in , in diesem Fall wird eine angepasste Version des for...in Ausdrucks verwendet. Weitere Informationen finden Sie unter Sequenzen, Asynchrone Ausdrücke, Aufgabenausdrücke und Berechnungsausdrücke.