Döngüler: for...in İfadesi

Bu döngü yapısı; aralık ifadesi, dizi, liste, dizi veya sabit listesini destekleyen diğer yapı gibi numaralanabilir bir koleksiyonda bir desenin eşleşmelerini tekrarlamak için kullanılır.

Syntax

for pattern in enumerable-expression do
    body-expression

Açıklamalar

İfade diğer .NET dillerinde deyimiyle karşılaştırılabilir çünkü numaralanabilir bir koleksiyonda değerler üzerinde döngü for...in for each yapmak için kullanılır. Ancak, for...in tüm koleksiyon üzerinde yineleme yerine koleksiyon üzerinde desen eşleştirmeyi de destekler.

Numaralanabilir ifade, numaralanabilir bir koleksiyon olarak veya işleci kullanılarak, integral .. türünde bir aralık olarak belirtilebilir. Listelenebilir koleksiyonlar listeler, diziler, diziler, kümeler, haritalar gibi öğeleri içerir. Uygulayan herhangi System.Collections.IEnumerable bir tür kullanılabilir.

bir aralığı işleci kullanarak ifade .. etmek için aşağıdaki söz dizimlerini kullanabilirsiniz.

'i başlatma. Bitirmek

Aşağıdaki kodda olduğu gibi skip adlı bir artış içeren bir sürüm de kullanabilirsiniz.

'i başlatma. atla. Bitirmek

Tamsayı aralıkları ve basit bir sayaç değişkenini desen olarak kullanırsanız, tipik davranış her yinelemede sayaç değişkenini 1 artırmadır, ancak aralık bir atlama değeri içerirse sayaç, atlama değeriyle artırılır.

Desende eş değerlerle eşleşmesi gövde ifadesinde de kullanılabilir.

Aşağıdaki kod örnekleri ifadenin kullanımını for...in göstermektedir.

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

Çıktı aşağıdaki gibidir:

1
5
100
450
788

Aşağıdaki örnekte, bir dizi üzerinde döngü ve basit bir değişken yerine tanımlama düzeni kullanma adımları ve açık bir şekilde açık bir şekilde açık ve açık bir şekilde açık bir şekilde açık ve net bir şekilde açık bir şekilde ifade etmek için aşağıdaki örnekte bir dizi üzerinde döngü gerçekleştirin.

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

Çıktı aşağıdaki gibidir:

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

Aşağıdaki örnekte, basit bir tamsayı aralığı üzerinde nasıl döngü gerçekleştirin?

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

İşlev1'in çıktısı aşağıdaki gibidir.

1 2 3 4 5 6 7 8 9 10

Aşağıdaki örnek, aralığın diğer tüm öğesini içeren 2 atlamalı bir aralık üzerinde nasıl döngü gerçekleştirebilirsiniz?

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

çıktısı function2 aşağıdaki gibidir.

1 3 5 7 9

Aşağıdaki örnekte bir karakter aralığının nasıl kullanımına sahip olduğu gösterir.

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

çıktısı function3 aşağıdaki gibidir.

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

Aşağıdaki örnek, bir ters yineleme için negatif atlama değerinin nasıl kullanıla bir gösterir.

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

çıktısı function4 aşağıdaki gibidir.

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

Aralığın başlangıcı ve bitişi, aşağıdaki kodda olduğu gibi işlevler gibi ifadeler de olabilir.

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

Bu function5 girişle çıktısı aşağıdaki gibidir.

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

Sonraki örnek, öğe döngüde gerekli değilken joker karakter ( _ ) kullanımını gösterir.

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

Çıktı aşağıdaki gibidir:

Number of elements in list1: 5

Note Sıralı ifadelerde ve diğer hesaplama ifadelerinde kullanabilirsiniz; bu durumda for...in ifadenin özelleştirilmiş for...in bir sürümü kullanılır. Daha fazla bilgi için bkz. Diziler, Zaman uyumsuz ifadeler, Görev ifadelerive Hesaplama İfadeleri.

Ayrıca bkz.