Sdílet prostřednictvím


Smyčky: Výraz for...in (F#)

Tuto konstrukci opakování se používá k iterování odpovídá vzorku agregující kolekce jako výraz rozsahu, sekvence, seznam, pole nebo jiné konstrukce, která podporuje výčtu.

for pattern in enumerable-expression do
   body-expression

Poznámky

for…in Výrazu lze porovnat se for each prohlášení v ostatních.NET jazyků, protože se používá k vytvoření smyčky přes hodnoty agregující kolekce.Však for…in podporuje také porovnávání prostřednictvím kolekce namísto pouze iteraci přes celé kolekce.

Vyčíslitelné výrazu lze zadat jako agregující kolekce nebo pomocí .. operátor jako oblast na integrálního typu.Vyčíslitelné obsahuje seznamy, sekvence, matice, sad, mapy atd.Libovolný typ, který implementuje IEnumerable lze použít.

Pokud rozsah express pomocí .. operátor, můžete použít následující syntaxi.

start ..finish

Můžete také použít verzi, která obsahuje přírůstek nazvaný Přeskočit, jako v následujícím kódu.

start ..skip ..finish

Při použití nedílnou rozsahy a jednoduchého čítače proměnné jako vzorek typického chování je zvýšit proměnné čítače o 1 při každém opakování, ale pokud oblast obsahuje hodnotu přeskočit, čítač je místo zvýšen hodnotou přeskočit.

Hodnoty v vzorek lze také ve výrazu subjektu.

Následující kód příklady ilustrují použití for...in výraz.

// Looping over a list. 
let list1 = [ 1; 5; 100; 450; 788 ]
for i in list1 do
   printfn "%d" i

Výstup je takto.

1
5
100
450
788

Následující příklad ukazuje, jak smyčku posloupnost a použití vzorku n-tice namísto jednoduché proměnné.

let seq1 = seq { for i in 1 .. 10 -> (i, i*i) }
for (a, asqr) in seq1 do
  printfn "%d squared is %d" a asqr

Výstup je takto.

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

Následující příklad ukazuje způsob vytvoření smyčky přes jednoduché celé oblasti.

let function1() =
  for i in 1 .. 10 do
    printf "%d " i
  printfn ""
function1()

Výstup function1 je následující.

1 2 3 4 5 6 7 8 9 10

Následující příklad ukazuje způsob vytvoření smyčky přes oblast přeskočit 2, včetně všech ostatních prvků rozsahu.

let function2() =
  for i in 1 .. 2 .. 10 do
     printf "%d " i
  printfn ""
function2()

Výstup function2 je následující.

1 3 5 7 9

Následující příklad ukazuje, jak použít rozsah znaků.

let function3() =
  for c in 'a' .. 'z' do
    printf "%c " c
  printfn ""
function3()

Výstup function3 je následující.

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

Následující příklad ukazuje použití zpětného iterace přeskočit zápornou hodnotu.

let function4() =
    for i in 10 .. -1 .. 1 do
        printf "%d " i
    printfn " ... Lift off!"
function4()

Výstup function4 je následující.

10 9 8 7 6 5 4 3 2 1 ... Lift off!

Začátek a konec rozsahu lze také výrazy, jako například funkce, jako v následujícím kódu.

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

Výstup function5 se tento vstup je takto.

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Další příklad ukazuje použití zástupných znaků (_), když prvek není potřeba ve smyčce.

let mutable count = 0
for _ in list1 do
   count <- count + 1
printfn "Number of elements in list1: %d" count

Výstup je takto.

Number of elements in list1: 5

Poznámka: můžete použít for...in v pořadí výrazů a dalších výrazů výpočtu v takovém případě upravenou verzi for...in výrazu.Další informace naleznete v tématu Sekvence (F#), Asynchronní pracovní postupy (F#) a Výpočetní výrazy (F#).

Viz také

Referenční dokumentace

Smyčky: Výraz for...to (F#)

Smyčky: Výraz while...do (F#)

Další zdroje

Referenční dokumentace jazyka F#