Perulangan: Ekspresi for...in

Konstruksi perulangan ini digunakan untuk mengulangi kecocokan pola dalam kumpulan yang dapat dijumlahkan seperti ekspresi rentang, urutan, daftar, array, atau konstruksi lain yang mendukung enumerasi.

Sintaks

for pattern in enumerable-expression do
    body-expression

Keterangan

Ekspresi for...in dapat dibandingkan dengan pernyataan for each dalam bahasa .NET lainnya karena digunakan untuk mengulang nilai dalam kumpulan yang dapat dijumlahkan. Namun, for...in juga mendukung pencocokan pola atas kumpulan dan bukan hanya iterasi atas seluruh kumpulan.

Ekspresi yang dapat dijumlahkan dapat ditentukan sebagai koleksi yang dapat dijumlahkan atau, dengan menggunakan .. operator. Kumpulan yang dapat dijumlahkan mencakup daftar, urutan, array, set, peta, dan sebagainya. Jenis apa pun yang mengimplementasikan System.Collections.IEnumerable dapat digunakan.

Saat Anda mengekspresikan rentang dengan menggunakan operator .., Anda dapat menggunakan sintaks berikut.

mulai .. finish

Anda juga dapat menggunakan versi yang menyertakan kenaikan yang disebut skip, seperti dalam kode berikut.

mulai .. skip .. finish

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 ekspresi for...in.

// 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 dan bukan variabel sederhana.

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 2 skip, yang mencakup setiap elemen rentang lainnya.

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

Output 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()

Output 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 skip negatif untuk perulangan terbalik.

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

Output function4 adalah sebagai berikut.

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

Awal dan akhir rentang juga dapat menjadi 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 function5 dengan 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 wildcard (_) 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 menggunakan versi ekspresi for...in yang dikustomisasi. Untuk informasi selengkapnya, lihat Urutan, Ekspresi asinkron, Ekspresi tugas, dan Ekspresi Komputasi.

Lihat juga