Hızlı giriş döngüsü: Nasıl kullanılır ve Neden?

Bu makalede for-in döngüsü, kullanım durumları ve çeşitleri hakkında bilgi edineceksiniz.

For-in döngüleri, bir dizi görevi belirli sayıda çalıştırmak için kullanılır. Bu döngüler, bir dizideki, aralıktaki veya bir dizedeki karakterler gibi herhangi bir diziyi yineler.

Sabit bir süre için bazı tekrarlayan işlemleri yapmak için for-in döngüsünü de kullanıyoruz.

Neden giriş döngüsüne ihtiyacımız var?

Birinin size Hello, World! Yazan bir program yazmanızı söylediğini düşünün. ekranda. Çözümünüz şöyle olacak:

 print ("Merhaba, Dünya!")

Ya fikrini değiştirdiler ve size Hello, World! Yazan bir program yazmanızı istediler. beş kez ekranda… Döngü bilgisi olmadan çözümünüz şunlar olabilir:

 print ("Merhaba, Dünya!") print ("Merhaba, Dünya!") print ("Merhaba, Dünya!") print ("Merhaba, Dünya!") print ("Merhaba, Dünya!")

Hmm. Aynı işi başarmak için beş kez benzer kod yazmak zaman alıcı görünüyor. Öyleyse, birisi sizden Merhaba, Dünya! Yazan bir program yazmanızı isterse ne yapardınız? ekranda yüz hatta milyon kez mi?

Saf bir çözüm, printifadeyi verilen sayıda kez yazmaktır . Çılgınca geliyor, değil mi? Ancak, aşağıdaki for-ingibi birkaç satır kod içeren döngülerin kullanılmasıyla bunun için daha iyi bir çözüm var :

 for i in 1… 100 ( //outputs Hello world for 100 times in the screen print("Hello, World!") ) 

Sözdizimi hakkında endişelenmeyin, onu aşağıda inceleyeceğiz.

For-in Loop sözdizimi

Swift'de şu şekilde bir for in döngüsü oluşturabilirsiniz:

 için () 

Yukarıdaki döngü bir aralık üzerinde yinelenir ve değişken içindeki aralıktan döndürülen her öğeye erişebiliriz. Menzil hakkında bilginiz yoksa, şu makaleye bakabilirsiniz: Swift Serileri.

Nasıl çalışır?

  • Üzerinde yinelenen dizi bir.
  • , Aralıktaki ilk sayıya ayarlanır ve döngü içindeki ifadeler yürütülür.
  • İfade yürütüldükten sonra, içindeki ikinci değeri içerecek şekilde güncellenir ve ifade yeniden yürütülür.
  • Bu işlem, aralığın sonuna ulaşılıncaya ve döngü durana kadar devam eder.

Örnek 1: For-in döngüsü Swift'de nasıl çalışır?

 for i in 1… 3 ( print("Hello world!. Value is (i)") ) 

Programı çalıştırdığınızda, çıktı:

Selam Dünya!. Değer 1'dir Merhaba dünya !. Değer 2'dir Merhaba dünya !. Değer 3'tür

Yukarıdaki programda, üzerinde yinelenen sıra 1 ila 3 arasındadır.

İ'nin değeri, aralıktaki (1) ilk sayıya ayarlanır ve her yinelemede aralığın bir sonraki sayısına güncellenir. Bu işlem, aralığın (3) sonuna ulaşılana kadar devam eder.

For-in döngü yürütme adımları
Yineleme Aralık (i) 'den döndürülen değer Çıktı
1 1 Selam Dünya!. Değer 1'dir
2 2 Selam Dünya!. Değer 2'dir
3 3 Selam Dünya!. Değer 3'tür

For-in döngüsünde aralık değerini atma

Döngünün içindeki aralık değerini kullanmadıysanız, Swift'de _(alt çizgi) kullanarak şu şekilde atabilirsiniz :

 _ için () 

Örnek 2: For-in döngüsünde aralık değerini atma

 // This example neglects value and uses half open range operator for _ in 1… <3 ( print("Hello world!") ) 

Programı çalıştırdığınızda, çıktı:

Selam Dünya! Selam Dünya!

Yukarıdaki programda, alt sınırı (1) içeren ancak üst sınırı (3) içermeyen yarı açık aralık operatörünün (… <) kullanılması nedeniyle yinelenen dizi 1'den 2'ye kadar bir aralıktır.

_aralıktaki (1) değeri ihmal eder ve print ifadesi çalıştırılır. Print ifadesi bir sonraki yineleme için yeniden çağrılır ve işlem sona erer çünkü 2 aralıktaki son değerdir.

Aralık değerleri olmadan for-in döngü yürütme adımları
Yineleme Aralıktan Döndürülen Değer Çıktı
1 Atılan Selam Dünya!
2 Atılan Selam Dünya!

adım kullanarak sabit aralıklar için for-in döngüsü

Her yinelemede aralık yerine sabit bir değerle artan bir döngü istiyorsanız, adım yöntemini kullanmanız gerekir.

Örnek 3: adım yöntemini kullanarak for-in döngüsü

 let interval = 2 for i in stride(from: 1, to: 10, by: interval) ( print(i) ) 

Programı çalıştırdığınızda, çıktı:

 1 3 5 7 9 

Yukarıdaki programda, strideişlev sayı dizisini döndürür: 1, 3, 5, 7, 9.

İ'nin değeri, dizinin (1) ilk numarasına ayarlanır ve döngünün içindeki print deyimi, konsolda "1" çıktısı veren çalıştırılır.

İfade yürütüldükten sonra, i'nin değeri başka bir değere (3) güncellenir ve print ifadesi tekrar çağrılır. Bu işlem, dizinin tüm öğelerine erişilene kadar devam eder.

Stride kullanarak For-in döngü yürütme adımları
Değer Koşul (Değer <Son) i (Çıktı)
1 1 <10 (doğru) 1
1 + 2 = 3 3 <10 (doğru) 3
1 + 2 * 2 = 5 5 <10 (doğru) 5
1 + 3 * 2 = 7 7 <10 (doğru) 7
1 + 4 * 2 = 9 9 <10 (doğru) 9
1 + 5 * 2 = 11 11 <10 (yanlış) Durur

For-in döngüsünü kullanarak bir koleksiyonun öğelerine nasıl erişilir?

Aşağıdaki gibi bir dizi diziniz olduğunu varsayalım. Dizi hakkında bir bilginiz yoksa, diziyi birden fazla değeri saklayabilen tek bir kap olarak düşünün. Daha ayrıntılı açıklama için bkz. Swift Dizileri.

 allow programlamaLanguages ​​= ("Swift", "Java", "Git", "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).

değer dizenin ilk karakterine ayarlanır ve where koşulu ile kontrol edilir. Koşul geri dönerse true, konsolda "I" çıktısı veren döngü (print deyimi) içindeki blok yürütülür.

İfade çalıştırıldıktan sonra, değer dizenin bir sonraki karakterine güncellenir ve tekrar koşul kontrol edilir. Koşul geri dönerse false, bloğu yürütmez ve değer bir sonraki karaktere güncellenir.

Bu işlem, dizenin son karakterine erişilene kadar devam eder.

For-in döngü yürütme adımlarını kullanarak filtreleyin
Yineleme değer değer! = “!” Çıktı
1 ben doğru ben
2 doğru
3 S doğru S
4 w doğru w
5 ben doğru ben
6 f doğru f
7 t doğru t
8 ! yanlış

Ilginç makaleler...