- Published on
Swift-da typealias
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
typealias β mavjud turga yangi nom berish imkonini beruvchi qurilma. Nomi murakkab eshitilsa-da, aslida juda sodda.
Muammo β takroriy struct
Faraz qilaylik, ilovada MovieModel struct-i bor:
struct MovieModel {
let title: String
let director: String
let count: Int
}
Bu model filmlar uchun ishlatiladi. Endi TV-seriallar ham qo'shmoqchisiz β va ularda ham xuddi shu maydonlar: sarlavha, rejissyor, ko'rishlar soni.
Birinchi fikr β yangi struct yaratish:
struct TVModel {
let title: String
let director: String
let count: Int
}
Bu ishlaydi, lekin ikki muammo bor:
MovieModelasosida yozilgan funksiyalarTVModelbilan ishlamaydi β funksiyalarni qayta yozish kerakMovieModel-ga o'zgarish kiritilsa,TVModel-ga ham alohida kiritish kerak β takroriy ish
Yechim β typealias
struct MovieModel {
let title: String
let director: String
let count: Int
}
typealias TVModel = MovieModel
Endi TVModel β bu MovieModel-ning boshqa nomi xolos. Ikkalasi bir xil tur, bir xil initializer, bir xil funksiyalar bilan ishlaydi:
let film = MovieModel(title: "Sarlavha", director: "Joe", count: 5)
let serial = TVModel(title: "TV sarlavha", director: "Emily", count: 10)
print(film.title) // Sarlavha
print(serial.title) // TV sarlavha
MovieModel-ga qo'shilgan har qanday o'zgarish TVModel-ga ham avtomatik ta'sir qiladi β chunki ular aslida bitta tur.
Boshqa misol β User va Customer
Katta ilovalarda bir xil turni turli kontekstlarda farqli nom bilan ishlatish qulay bo'lishi mumkin:
struct User {
let name: String
let email: String
}
typealias Customer = User
Endi Customer β User-ning boshqa nomi. Kod o'quvchilar uchun kontekstga mos nom ishlatiladi, lekin aslida bir xil tur.
typealias sintaksisi
typealias YangiNom = MavjudTur
Har qanday turga alias berish mumkin β struct, class, enum, protokol, hatto murakkab generik turlar uchun ham:
// Oddiy misol
typealias StringArray = [String]
// Murakkab tur uchun (keyingi videoda ko'riladi)
typealias Handler = (Result<String, Error>) -> Void
Xulosa
Bu videoda o'rganildi:
typealiasβ mavjud turga yangi nom beradi, yangi tur yaratmaydi- Bir xil turni ikki marta struct sifatida yozish o'rniga
typealiasishlatish mumkin typealiasbilan yaratilgan nom va asl tur β bir xil tur, bir xil funksiyalar, bir xil initializer- Amalda kam ishlatiladi, lekin keyingi videoda asinxron kod bilan birga ko'rish mumkin bo'lgan holat ko'rsatiladi
Keyingi videoda typealias amaliy ishlatilishi β asinxron funksiyalar bilan birga ko'rsatiladi.