Swift enum’lar va pattern matching
Enum’lar va pattern matching
Chekli holatlar to‘plamini enum bilan modellashtiring, bog‘langan qiymatlar (associated values) qo‘shing va switch yordamida andozalar (patterns) bilan solishtiring.
Oddiy enum’lar
Belgilangan holatlar to‘plamiga ega tipni e’lon qilish uchun enum dan foydalaning.
Sintaksis: enum Direction { case north, south, east, west }
Misol
enum Direction { case north, south, east, west }
let d: Direction = .east
print(d)
Ushbu misol yo‘nalishlar enum’ini e’lon qiladi va qisqa nuqtali sintaksis yordamida qiymat yaratadi.
Bog‘langan qiymatlar (associated values)
Bog‘langan qiymatlar yordamida har bir holatga ma’lumot biriktiring.
Sintaksis: enum Result { case success(T), failure(Error) }
Misol
enum Barcode {
case upc(Int, Int, Int, Int)
case qr(String)
}
let b1 = Barcode.upc(8, 85909, 51226, 3)
let b2 = Barcode.qr("HELLO")
Ushbu misolda to‘rtta butun sonli UPC yoki stringli QR kod bo‘lishi mumkin bo‘lgan shtrix-kod ko‘rsatilgan.
Pattern matching (andoza bilan solishtirish)
Bog‘langan qiymatlarni ajratib olish uchun andozalar bilan switch dan foydalaning.
Sintaksis:
switch value { case .case(let x): ... }- Bitta holatni tekshirish uchun
if case
Misol
func describe(_ code: Barcode) {
switch code {
case .upc(let numberSystem, let manufacturer, let product, let check):
print("UPC: \(numberSystem)-\(manufacturer)-\(product)-\(check)")
case .qr(let text):
print("QR: \(text)")
}
}
describe(b1)
describe(b2)
Ushbu misol bog‘langan qiymatlarni bog‘lash uchun pattern matching’dan foydalanadi va formatlangan tavsifni chiqaradi.
Xom qiymatlar (raw values)
Standart xom qiymatlarni (masalan, Int yoki String) belgilang va ulardan initsializatsiya qiling.
Sintaksis:
enum HTTPStatus: Int { case ok = 200, notFound = 404 }HTTPStatus(rawValue: 200)
Misol
enum HTTPStatus: Int { case ok = 200, notFound = 404 }
let status = HTTPStatus(rawValue: 200)
print(status == .ok)
Ushbu misol muvaffaqiyatsiz bo‘lishi mumkin bo‘lgan initsializator (failable initializer) yordamida butun sonli holat kodini qayta enum qiymatiga moslaydi.
Maslahat: Har bir holat turli ma’lumotlarni talab qilsa, bog‘langan qiymatlarni afzal ko‘ring; xom qiymatlardan faqat API kodi kabi primitiv qiymatga moslash zarur bo‘lganda foydalaning.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
