Swift kengaytmalari


ULASHISH

Swift kengaytmalari (extensions)

Mavjud tiplarga voris sinf yaratmasdan funksionallik qo‘shing, jumladan metodlar, hisoblanadigan xususiyatlar va protokolga moslik.


Hisoblanadigan xususiyatlar va metodlar

Istalgan tipni kengaytirib, unga shu tipga tegishli yordamchi funksiyalar qo‘shing.

Sintaksis: extension Type { var computed: T { ... }; func util() { ... } }

Misol

extension String {
  var isBlank: Bool { trimmingCharacters(in: .whitespacesAndNewlines).isEmpty }
  func repeated(_ n: Int) -> String { String(repeating: self, count: n) }
}

print("  ".isBlank)    // true
print("Hi".repeated(3)) // HiHiHi

O‘zingiz sinab ko‘ring »

Ushbu misol String ga hisoblanadigan xususiyat va yordamchi metod qo‘shadi.


Kengaytmalarda protokolga moslik

Vazifalarni ajratish uchun protokollarni asl tip e’lonidan tashqarida qabul qiling.

Sintaksis: extension Type: Protocol { ... }

Misol

protocol Describable { func describe() -> String }

struct User { let name: String }

extension User: Describable {
  func describe() -> String { "User(\(name))" }
}

print(User(name: "Morgan").describe())

O‘zingiz sinab ko‘ring »

Ushbu misol kengaytma orqali User ga Describable protokoliga moslikni qo‘shadi.



Vazifalar bo‘yicha guruhlash

Katta tiplarni imkoniyatlar bo‘yicha guruhlangan (masalan, tarmoq bilan ishlash, formatlash) bir nechta kengaytma yordamida tartibga soling.

Sintaksis:

  • extension Type { /* Feature A */ }
  • extension Type { /* Feature B */ }

Misol

struct Article { let title: String; let body: String }

extension Article { // Formatting helpers
  var preview: String { String(body.prefix(40)) + "..." }
}

extension Article { // Networking stub
  static func fetchAll() -> [Article] { [] }
}

O‘zingiz sinab ko‘ring »

Ushbu misol yordamchi funksiyalarni maqsadiga ko‘ra guruhlaydi va asosiy e’lonni ixcham saqlaydi.

Maslahat: Har bir tip kodini aniq yo‘naltirilgan imkoniyatlarga ajratib tartiblash uchun kengaytmalardan foydalaning.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!