Döngü: for... ifadesinde (F#)
Bu döngü yapýsý sýralanabilir koleksiyon aralığı ifade, sıra, liste, dizi ya da numaralandırma destekleyen diğer yapı gibi bir desen eşleşmeleri üzerinden yineleme yapmak için kullanılır.
for pattern in enumerable-expression do
body-expression
Notlar
for…in İfade için karşılaştırılabilir for each diğer ifadesi.net dilleri sýralanabilir koleksiyon değerleri üzerinde döngü için kullanılan çünkü. Ancak, for…in desen eşleştirme tüm koleksiyon toplama yerine yalnızca yineleme üzerinde de destekler.
Sýralanabilir ifade olarak sýralanabilir koleksiyon veya kullanarak belirtilebilir .. bir aralıkta bir tamsayı türü olarak işleci. Uygulama geliþtiriyorsanýz sýralanabilir Koleksiyonlar listeleri, sıraları, diziler, ayarlar, haritalar vb. içerir. Uygulayan her türlü IEnumerable kullanılabilir.
Ne zaman, ifade aralığı kullanarak .. işleci aşağıdaki sözdizimini kullanabilirsiniz.
start .. finish
Adı verilen bir artış içeren bir sürümünü de kullanabilirsiniz Atla, aşağıdaki kodda gibi.
start .. skip .. finish
Tam sayı aralığı ve basit sayaç değeri bir desen olarak kullandığınızda, her tekrarında 1 artırarak sayaç deðiþkenini artýrmak için tipik davranışı olduğu halde aralık Atla değerini içeriyorsa, sayaç Atla değeri yerine artırılır.
Gövde ifadesinde desende eşleşen değerleri de kullanılabilir.
Aşağıdaki kod örnekleri kullanımını göstermek for...in ifadesi.
// 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 örnek, nasıl bir sıra üzerinde döngü ve kayıt düzeni desen yerine basit bir değişken kullanmak nasıl gösterir.
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ığında döngü gösterilmiştir.
let function1() =
for i in 1 .. 10 do
printf "%d " i
printfn ""
function1()
Function1 çıktısı aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10
Aşağıdaki örnek, aralığın her öğe içeren bir Atla 2 aralığıyla üzerinde döngü gösterilmiştir.
let function2() =
for i in 1 .. 2 .. 10 do
printf "%d " i
printfn ""
function2()
Çıkışını function2 gibidir.
1 3 5 7 9
Aşağıdaki örnek, karakter aralığı kullanın gösterilmiştir.
let function3() =
for c in 'a' .. 'z' do
printf "%c " c
printfn ""
function3()
Çıkışını function3 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, ters bir yineleme için bir negatif Atla değerini kullanın gösterilmiştir.
let function4() =
for i in 10 .. -1 .. 1 do
printf "%d " i
printfn " ... Lift off!"
function4()
Çıkışını function4 gibidir.
10 9 8 7 6 5 4 3 2 1 ... Lift off!
Başlangıç ve bitiş aralığı 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
Çıkışını function5 ile bu giriş aşağıdaki gibidir.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Öğe bir döngüde gerekli değildir, örnek bir joker karakteri (_) kullanımını göstermektedir.
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
Not kullanabileceğiniz for...in sıra deyim ve diğer hesaplama ifadeleri özelleştirilmiş bir sürümünü durumda bulunan for...in deyimi kullanılır. Daha fazla bilgi için, bkz. Sıraları (F#), Zaman uyumsuz iş akışları (F#) ve Hesaplama ifadeleri (F#)
Ayrıca bkz.
Başvuru
Döngü:... while ifadesi (F#) yapmak