Dalam artikel ini, Anda akan mempelajari for-in loop, kasus penggunaan, dan variannya.
Perulangan For-in digunakan untuk menjalankan sekumpulan tugas selama beberapa kali. Loop ini mengulangi urutan apa pun seperti item dalam larik, rentang, atau karakter dalam string.
Kami juga menggunakan for-in loop untuk melakukan beberapa proses berulang untuk jangka waktu tertentu.
Mengapa kita membutuhkan for-in loop?
Bayangkan seseorang menyuruh Anda menulis program yang menghasilkan Hello, World! di layar. Solusi Anda adalah:
print ("Halo, Dunia!")
Bagaimana jika, mereka berubah pikiran dan menyuruh Anda menulis program yang menghasilkan Hello, World! di layar selama lima kali… Tanpa pengetahuan loop, solusi Anda mungkin:
print ("Halo, Dunia!") print ("Halo, Dunia!") print ("Halo, Dunia!") print ("Halo, Dunia!") print ("Halo, Dunia!")
Hmm. Tampaknya memakan waktu untuk menulis kode serupa sebanyak lima kali untuk menyelesaikan pekerjaan yang sama. Jika ya, apa yang akan Anda lakukan jika seseorang meminta Anda untuk menulis program yang menampilkan Hello, World! di layar selama ratusan atau bahkan jutaan kali?
Salah satu solusi yang naif adalah menulis print
pernyataan untuk beberapa kali. Kedengarannya gila, bukan? Tetapi ada solusi yang lebih baik untuk ini dengan penggunaan for-in
loop dengan beberapa baris kode seperti:
for i in 1… 100 ( //outputs Hello world for 100 times in the screen print("Hello, World!") )
Jangan khawatir tentang sintaks, kami akan menjelajahinya di bawah ini.
Sintaks For-in Loop
Anda dapat membuat for in loop di Swift sebagai:
untuk di ()
Perulangan di atas melakukan iterasi pada suatu rentang dan kita dapat mengakses setiap elemen yang dikembalikan dari rentang dalam variabel. Jika Anda tidak tahu tentang jangkauan, Anda dapat memeriksa artikel: Swift Ranges.
Bagaimana itu bekerja?
- Urutan yang diiterasi adalah a.
- Ini disetel ke angka pertama dalam rentang, dan pernyataan di dalam perulangan dijalankan.
- Setelah pernyataan dieksekusi, diperbarui untuk memuat nilai kedua di dalam dan pernyataan tersebut dieksekusi lagi.
- Proses ini berlanjut hingga akhir rentang tercapai dan loop berhenti.
Contoh 1: Cara kerja for-in loop di Swift
for i in 1… 3 ( print("Hello world!. Value is (i)") )
Saat Anda menjalankan program, hasilnya adalah:
Halo Dunia!. Nilainya adalah 1 Halo dunia !. Nilainya 2 Hello world !. Nilainya 3
Dalam program di atas, urutan yang diiterasi adalah rentang dari 1 hingga 3.
Nilai i disetel ke angka pertama dalam rentang (1), dan diperbarui ke angka rentang berikutnya pada setiap iterasi. Proses ini berlanjut hingga akhir rentang (3) tercapai.
Langkah-langkah eksekusi loop masukPengulangan | Nilai yang dikembalikan dari rentang (i) | Keluaran |
---|---|---|
1 | 1 | Halo Dunia!. Nilainya 1 |
2 | 2 | Halo Dunia!. Nilainya 2 |
3 | 3 | Halo Dunia!. Nilainya 3 |
Membuang nilai rentang dalam loop masuk
Jika Anda tidak menggunakan nilai rentang di dalam loop, Anda dapat membuang menggunakan _
(garis bawah) di Swift sebagai:
untuk _ in ()
Contoh 2: Membuang nilai rentang di loop masuk
// This example neglects value and uses half open range operator for _ in 1… <3 ( print("Hello world!") )
Saat Anda menjalankan program, hasilnya adalah:
Halo Dunia! Halo Dunia!
Dalam program di atas, urutan yang diiterasi adalah rentang dari 1 hingga 2 karena penggunaan operator jarak setengah terbuka (… <) yang mencakup batas bawah (1) tetapi bukan batas atas (3).
_
mengabaikan nilai dari kisaran (1) dan pernyataan cetak dijalankan. Pernyataan cetak dipanggil lagi untuk iterasi berikutnya dan proses berakhir karena 2 adalah nilai terakhir dalam rentang.
Pengulangan | Nilai yang Dikembalikan dari Rentang | Keluaran |
---|---|---|
1 | Dibuang | Halo Dunia! |
2 | Dibuang | Halo Dunia! |
for-in loop untuk interval tetap menggunakan langkah
Jika Anda menginginkan perulangan yang bertambah dengan beberapa nilai tetap di setiap iterasi, alih-alih rentang, Anda harus menggunakan metode langkah.
Contoh 3: loop ke dalam menggunakan metode langkah
let interval = 2 for i in stride(from: 1, to: 10, by: interval) ( print(i) )
Saat Anda menjalankan program, hasilnya adalah:
1 3 5 7 9
Dalam program di atas, stride
fungsi mengembalikan urutan angka: 1, 3, 5, 7, 9.
Nilai i diatur ke nomor pertama dari urutan (1), dan pernyataan cetak di dalam loop dijalankan yang menghasilkan "1" di konsol.
Setelah pernyataan dieksekusi, nilai i diperbarui ke nilai lain (3) dan pernyataan cetak dipanggil lagi. Proses ini berlanjut hingga semua elemen urutan diakses.
Langkah-langkah eksekusi perulangan for-in menggunakan langkahNilai | Kondisi (Nilai <Akhir) | i (Keluaran) |
---|---|---|
1 | 1 <10 (benar) | 1 |
1 + 2 = 3 | 3 <10 (benar) | 3 |
1 + 2 * 2 = 5 | 5 <10 (benar) | 5 |
1 + 3 * 2 = 7 | 7 <10 (benar) | 7 |
1 + 4 * 2 = 9 | 9 <10 (benar) | 9 |
1 + 5 * 2 = 11 | 11 <10 (salah) | Berhenti |
Bagaimana cara mengakses elemen koleksi menggunakan for-in loop?
Misalkan Anda memiliki array string seperti di bawah ini. Jika Anda tidak tahu tentang array, anggaplah array sebagai wadah tunggal yang dapat menyimpan lebih dari satu nilai. Untuk penjelasan lebih detail, lihat Swift Array.
let programmingLanguages = ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python")
What if someone told you to print all the programming languages?
A way is to access those elements using index as programmingLanguages(0), programmingLanguages(1)
… and so on till you get all the elements. But this is too tedious.
Here comes for-in loop to the rescue. You can iterate using for in loop as:
Example 4: Accessing elements of an array (collection) using for-in loop
let programmingLanguages = ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python") for language in programmingLanguages ( print(language) )
When you run the program, the output will be:
Swift Java Go JavaScript Kotlin Python
In the above program, the sequence being iterated over is an array of strings.
The value of language is set to the first element of the array, and the print statement inside the loop is executed which outputs "Swift" in the console.
After the statement is executed, language is updated with the next element of the array and the print statement is called again. This process continues until the last element of array is accessed.
Example 5: Accessing elements of a string (collection) using for-in loop
Since, in Swift, strings are also collection, you can access each character in a string using for loop.
for value in "I♥Swift!" ( print(value) )
When you run the program, the output will be:
I ♥ S w i f t !
How to access indices of a collection using for-in loop?
If you want to access the index of the array (position of elements in an array i.e. 0, 1, 2), you need to use enumerated
method as:
Example 6: Accessing indices of an array using for-in loop
let programmingLanguages = ("Swift", "Java", "Go", "JavaScript", "Kotlin", "Python") for (index, language) in programmingLanguages.enumerated() ( print("(index):(language)") )
When you run the program, the output will be:
0:Swift 1:Java 2:Go 3:JavaScript 4:Kotlin 5:Python
Here, the enumerated method returns a tuple (Int
, String
) composed of the index (Int
) and the value (String
) for each item in the array. For example: (0, Swift), (1, Java)…
Using for-in
loop, you can access these items in a tuple one by one. If you don't know about Tuple, you can simply think it as a container that can hold value of different types. For more detailed explanation, see Swift Tuples .
How to filter elements using where clause in a for-in loop?
You can also filter contents from for in loop using where clause as
for value in "I♥Swift!" where value != "!" ( print(value) //removes exclamation sign )
When you run the program, the output will be:
I ♥ S w i f t
In the above program, the sequence being iterated over is string (collection of characters).
nilai diatur ke karakter pertama dari string dan diperiksa dengan kondisi where. Jika kondisi kembali true
, blok di dalam loop (pernyataan cetak) dijalankan yang menghasilkan "I" di konsol.
Setelah pernyataan dieksekusi, nilai diperbarui ke karakter string berikutnya dan kondisinya dicentang. Jika kondisi kembali false
, itu tidak mengeksekusi blok dan nilai diperbarui ke karakter berikutnya.
Proses ini berlanjut hingga karakter terakhir dari string tersebut diakses.
Filter menggunakan langkah-langkah eksekusi loop masukPengulangan | nilai | nilai! = "!" | Keluaran |
---|---|---|---|
1 | saya | benar | saya |
2 | ♥ | benar | ♥ |
3 | S | benar | S |
4 | w | benar | w |
5 | saya | benar | saya |
6 | f | benar | f |
7 | t | benar | t |
8 | ! | Salah |