Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konstruksi perulangan ini digunakan untuk mengulangi kecocokan pola dalam koleksi yang dapat dihitung seperti ekspresi rentang, urutan, daftar, array, atau konstruksi lain yang mendukung enumerasi.
Sintaksis
for pattern in enumerable-expression do
body-expression
Komentar
Ekspresi for...in dapat dibandingkan for each dengan pernyataan dalam bahasa .NET lainnya karena digunakan untuk mengulang nilai dalam koleksi yang dapat dihitung. Namun, for...in juga mendukung pencocokan pola atas koleksi alih-alih hanya iterasi atas seluruh koleksi.
Ekspresi yang dapat dijumlahkan dapat ditentukan sebagai koleksi yang dapat dijumlahkan atau, dengan menggunakan .. operator. Koleksi yang dapat dijumlahkan termasuk daftar, urutan, array, set, peta, dan sebagainya. Jenis apa pun yang mengimplementasikan System.Collections.IEnumerable dapat digunakan.
Saat mengekspresikan rentang dengan menggunakan .. operator, Anda dapat menggunakan sintaks berikut.
mulai .. selesai
Anda juga dapat menggunakan versi yang menyertakan kenaikan yang disebut lewati, seperti dalam kode berikut.
mulai .. lewati .. selesai
Jika nilai skip tidak ditentukan, maka nilai berikutnya yang dihasilkan dalam koleksi akan bertambah 1. Ketika lombah ditentukan, nilai tersebut akan bertambah bertahap.
Nilai yang cocok dalam pola juga dapat digunakan dalam ekspresi isi.
Contoh kode berikut mengilustrasikan penggunaan for...in ekspresi.
// Looping over a list.
let list1 = [ 1; 5; 100; 450; 788 ]
for i in list1 do
printfn "%d" i
Outputnya sebagai berikut.
1
5
100
450
788
Contoh berikut menunjukkan cara mengulang urutan, dan cara menggunakan pola tuple alih-alih variabel sederhana. Dalam contoh ini, ekspresi urutan menggunakan -> operator, yang merupakan singkatan untuk do yield dalam ekspresi urutan dan ekspresi komputasi lainnya. Operator -> memungkinkan Anda menentukan ekspresi yang nilainya menjadi bagian dari urutan. Untuk informasi selengkapnya, lihat Urutan dan Ekspresi Komputasi.
let seq1 = seq { for i in 1 .. 10 -> (i, i*i) }
for (a, asqr) in seq1 do
printfn "%d squared is %d" a asqr
Outputnya sebagai berikut.
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
Contoh berikut menunjukkan cara mengulang rentang bilangan bulat sederhana.
let function1() =
for i in 1 .. 10 do
printf "%d " i
printfn ""
function1()
Output function1 adalah sebagai berikut.
1 2 3 4 5 6 7 8 9 10
Contoh berikut menunjukkan cara mengulang rentang dengan lompatan 2, yang mencakup setiap elemen rentang lainnya.
let function2() =
for i in 1 .. 2 .. 10 do
printf "%d " i
printfn ""
function2()
Outputnya function2 adalah sebagai berikut.
1 3 5 7 9
Contoh berikut menunjukkan cara menggunakan rentang karakter.
let function3() =
for c in 'a' .. 'z' do
printf "%c " c
printfn ""
function3()
Outputnya function3 adalah sebagai berikut.
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
Contoh berikut menunjukkan cara menggunakan nilai lompatan negatif untuk perulangan terbalik.
let function4() =
for i in 10 .. -1 .. 1 do
printf "%d " i
printfn " ... Lift off!"
function4()
Outputnya function4 adalah sebagai berikut.
10 9 8 7 6 5 4 3 2 1 ... Lift off!
Awal dan akhir rentang juga dapat berupa ekspresi, seperti fungsi, seperti dalam kode berikut.
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
Output dengan function5 input ini adalah sebagai berikut.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Contoh berikutnya menunjukkan penggunaan karakter kartubebas (_) ketika elemen tidak diperlukan dalam perulangan.
let mutable count = 0
for _ in list1 do
count <- count + 1
printfn "Number of elements in list1: %d" count
Outputnya sebagai berikut.
Number of elements in list1: 5
Note Anda dapat menggunakan for...in dalam ekspresi urutan dan ekspresi komputasi lainnya, dalam hal ini versi for...in ekspresi yang dikustomisasi digunakan. Untuk informasi selengkapnya, lihat Urutan, Ekspresi asinkron, Ekspresi tugas, dan Ekspresi Komputasi.