- Published on
Swiftda for-in loop
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Dasturlashda looplar (takrorlash operatorlari) kod blokini qayta-qayta bajarish uchun ishlatiladi.
Masalan, bir xabarni 100 marta chiqarish kerak bo'lsa, loopdan foydalanamiz. Bu oddiy misol β looplar yordamida bundan ancha murakkab ishlarni ham bajarish mumkin.
Swift tilida 3 xil loop mavjud:
for-inloopwhilelooprepeat...whileloop
for-in loop nima?
Swift tilida for-in loop ma'lum bir ketma-ketlik (array, range, string va boshqalar) ustida takroriy o'tish uchun ishlatiladi.
for-in loop sintaksisi:
for val in sequence {
// operatorlar
}
Bu yerda val har bir takrorlanishda sequence ichidagi navbatdagi elementni oladi. Loop ketma-ketlikdagi oxirgi elementgacha davom etadi.
for-in loopning oqim diagrammasi

Misol:
Ushbu misolda languages nomli array yaratilgan.
- Dastlab
languageqiymati arrayning birinchi elementi βSwiftbo'ladi vaprintbajariladi. - Keyin
languagenavbatdagi elementga yangilanadi va loop yana bajariladi. - Bu jarayon arrayning oxirgi elementi o'tilguncha davom etadi.
for-in loop + where sharti
Swift tilida for-in loop bilan birga where qo'shimchasidan foydalanish mumkin. Bu loop ichida filtrlash vazifasini bajaradi: where ichidagi shart true bo'lsa, loop bajariladi.
Tushuntirish:
for language in languages where language != "Java"
Agar where ichidagi shart true qaytarsa, loop bajariladi, aks holda bajarilmaydi.
Quyidagi tarzda ishlaydi:
- 1-takrorlash:
Swiftβ shart true β ekranga chiqariladi - 2-takrorlash:
Javaβ shart false β chiqarilmaydi - 3-takrorlash:
Goβ shart true β chiqariladi - 4-takrorlash:
JavaScriptβ shart true β chiqariladi
Range bilan for loop
Range β ikki son oralig'idagi qiymatlar ketma-ketligi.
Masalan:
var values = 1...3
Bu 1, 2, 3 qiymatlarini o'z ichiga olgan range.
Swiftda range ustida loopni quyidagicha yozamiz:
Tushuntirish:
- i = 1 β chiqariladi β 2 bo'ladi
- i = 2 β chiqariladi β 3 bo'ladi
- i = 3 β chiqariladi β 4 bo'ladi
- i = 4 β range tugagan β loop to'xtaydi
stride funksiyasi bilan for loop
Agar loopni har safar ma'lum qadamlarda oshirib borishni istasak (masalan, 1, 3, 5, 7β¦), range emas, stride(from:to:by:) funksiyasidan foydalanamiz.
Bu misolda:
- Loop 1 dan 10 gacha (10 kirmaydi) yuradi
- Har bir takrorlanishda i 2 taga oshiriladi
π Masalalarni qanday yechish kerak?
β Namuna: 1-masala yechimi
Masala: 1 dan n gacha bo'lgan sonlar yig'indisini qaytaring.
Bosqichma-bosqich yechim:
1-qadam: Masalani tushunish
n = 5β1 + 2 + 3 + 4 + 5 = 15n = 10β1 + 2 + ... + 10 = 55
2-qadam: for-in loop bilan yechish
var sum = 0
for i in 1...n {
sum += i
}
return sum
3-qadam: To'liq yechim
Natija: Barcha testlar o'tadi β
Izoh:
sum = 0β yig'indini saqlash uchun o'zgaruvchifor i in 1...nβ 1 dan n gacha takrorlashsum += iβ har bir sonni yig'indiga qo'shish- Oxirida
sumqaytariladi
Alternativ: Matematik formula bilan ham yechish mumkin:
n * (n + 1) / 2
Xulosa
- for-in β ketma-ketlik ustida takrorlash
- Range β
1...5(yopiq),1..<5(yarim ochiq) - where β loop ichida filtrlash
- stride β ma'lum qadamlarda takrorlash
- break β loopni to'xtatish
- continue β joriy iteratsiyani o'tkazish