Swift closure’lar


ULASHISH

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, $1 va 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"]

O‘zingiz sinab ko‘ring »

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

O‘zingiz sinab ko‘ring »

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")
}

O‘zingiz sinab ko‘ring »

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!