Swift closure’lar
Swift closure’lar (yopiq funksiyalar)
Closure ifodalari va trailing closure sintaksisi yordamida qiymatlarni qamrab oling (capture) va xatti-harakatni birinchi darajali (first-class) funksiyalar sifatida uzating.
Closure ifodalari
Closure’lar (yopiq funksiyalar) — uzatish va saqlash mumkin bo‘lgan mustaqil funksionallik bloklari.
Sintaksis:
{ (params) -> Return in statements }- qisqa argumentlar
$0,$1va tipni avtomatik aniqlash.
Misol
let nums = [3, 1, 2]
let sorted = nums.sorted { $0 < $1 }
let strings = sorted.map { "#\($0)" }
print(strings) // ["#1", "#2", "#3"]
Ushbu misol qisqa argumentli closure yordamida sonlarni saralaydi va ularni stringlarga o‘zgartiradi (map).
Qiymatlarni qamrab olish (capturing)
Closure’lar atrofdagi kontekstdagi konstanta va o‘zgaruvchilarni havola orqali qamrab oladi.
Sintaksis: func makeCounter() -> () -> Int { var n = 0; return { n += 1; return n } }
Misol
func makeCounter() -> () -> Int {
var n = 0
return {
n += 1
return n
}
}
let next = makeCounter()
print(next()) // 1
print(next()) // 2
Closure chaqiruvlar orasida n ni eslab qoladi va natijada ortib boruvchi hisoblagich hosil bo‘ladi.
Trailing closure’lar
Agar oxirgi parametr closure bo‘lsa, o‘qishga qulaylik uchun trailing closure sintaksisidan foydalanishingiz mumkin.
Sintaksis: fn(x, closure: { ... }) o‘rniga fn(x) { ... }
Misol
func repeatTimes(_ n: Int, _ work: () -> Void) {
for _ in 0..<n { work() }
}
repeatTimes(3) {
print("Hi")
}
Ushbu misol uch marta bajariladigan blokni uzatish uchun trailing closure sintaksisidan foydalanadi.
Maslahat: O‘qishga qulaylik uchun qisqa argument nomlari ($0, $1) va trailing closure’lardan foydalaning.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
