Swift kengaytmalari
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
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())
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] { [] }
}
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!
