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

Bu döngü oluşturma yapısı, aralık ifadesi, sıra, liste, dizi veya numaralandırmayı destekleyen başka bir yapı gibi numaralandırılabilir bir koleksiyondaki bir desenin eşleşmelerini yinelemek için kullanılır.

Sözdizimi

for pattern in enumerable-expression do
    body-expression

Açıklamalar

İfade for...in , numaralandırılabilir bir koleksiyondaki değerler üzerinde döngü yapmak için kullanıldığından diğer .NET dillerindeki deyimiyle karşılaştırılabilir for each . Ancak, for...in yalnızca koleksiyonun tamamı üzerinde yineleme yerine koleksiyon üzerinde desen eşleştirmeyi de destekler.

Numaralandırılabilir ifade, numaralandırılabilir bir koleksiyon olarak veya işleci kullanılarak .. belirtilebilir. Numaralandırılabilir koleksiyonlar listeler, diziler, diziler, kümeler, haritalar vb. içerir. Uygulayan System.Collections.IEnumerable herhangi bir tür kullanılabilir.

işlecini .. kullanarak bir aralığı ifade ettiğinizde, aşağıdaki söz dizimini kullanabilirsiniz.

başlat .. Bitirmek

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

başlat .. atla .. Bitirmek

Atlama değeri belirtilmezse, koleksiyonda oluşturulan sonraki değer 1 artırılır. Atlama belirtildiğinde, bu değer artırılır.

Desende eşleşen değerler gövde ifadesinde de kullanılabilir.

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

// 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ü yapma ve basit bir değişken yerine tanımlama grubu deseninin nasıl kullanılacağı gösterilmektedir.

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 örnek, basit bir tamsayı aralığı üzerinde döngü yapmayı gösterir.

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

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

1 2 3 4 5 6 7 8 9 10

Aşağıdaki örnekte, aralığın diğer tüm öğelerini içeren 2 atlamalı bir aralığın nasıl döngüye alındığı gösterilmektedir.

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 karakter aralığının nasıl kullanılacağı gösterilmektedir.

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 örnekte ters yineleme için negatif atlama değerinin nasıl kullanılacağı gösterilmektedir.

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 sonu, 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 girişle çıkışı function5 aşağıdaki gibidir.

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

Sonraki örnekte, öğe döngüde gerekli olmadığında joker karakter (_) kullanımı gösterilmektedir.

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 for...in ; bu durumda ifadenin for...in özelleştirilmiş bir sürümü kullanılır. Daha fazla bilgi için bkz . Sıralar, Zaman Uyumsuz ifadeler, Görev ifadeleri ve Hesaplama İfadeleri.

Ayrıca bkz.