Published on

Swiftda Enum

Authors

Swiftda enum (enumeration ning qisqartmasi) β€” bu foydalanuvchi tomonidan yaratilgan ma'lumot turi bo'lib, o'zaro bog'liq qiymatlarning sobit to'plamiga ega.

Enum yaratish uchun enum kalit so'zidan foydalanamiz. Masalan,

enum Season {
  case spring, summer, autumn, winter
}

Bu yerda:

  • Season β€” enumning nomi
  • spring/summer/autumn/winter β€” enum ichida belgilangan qiymatlar

Enum qiymatlari enum case (holatlari) deb ham ataladi. Va enum ichida qiymatlarni e'lon qilish uchun case kalit so'zidan foydalanamiz.

Enum o'zgaruvchilarini yaratish

Enum ma'lumot turi bo'lgani uchun enum turli o'zgaruvchilar yaratishimiz mumkin. Masalan,

var currentSeason: Season

Bu yerda currentSeason β€” Season turli o'zgaruvchi. U faqat enum ichida mavjud qiymatlarni (spring, summer, autumn, winter) saqlashi mumkin.

Enum o'zgaruvchilariga qiymat berish

Enum o'zgaruvchisiga qiymat berish uchun enum nomidan va . belgisidan foydalanamiz. Masalan,

// currentSeason o'zgaruvchisiga summer qiymatini berish
var currentSeason = Season.summer

Bu yerda currentSeason enum o'zgaruvchisiga summer qiymatini tayinladik.

Misol:

// enum e'lon qilish 
enum Season {
  
  // enum qiymatlarini e'lon qilish
  case spring, summer, autumn, winter
}

// enum o'zgaruvchisi yaratish
var currentSeason: Season

// enum o'zgaruvchisiga qiymat berish
currentSeason = Season.summer

print("Joriy mavsum:", currentSeason)

Natija:

Joriy mavsum: summer

Yuqoridagi misolda:

  • Season β€” 4 ta qiymatga ega enum: spring, summer, autumn, winter
  • currentSeason β€” enum turli o'zgaruvchi
  • currentSeason = Season.summer β€” currentSeason ga enum qiymatini berish

O'zgaruvchilarga o'xshab, enum o'zgaruvchilarini yaratish va qiymat berishni bir qatorda amalga oshirishimiz mumkin. Masalan,

var lastSeason = Season.spring

Enum va Switch operatori

Swiftda enumni switch operatori bilan birga ishlatishimiz mumkin. Masalan,

enum PizzaSize {
  case small, medium, large
}

var size = PizzaSize.medium

switch(size) {
  case .small:
    print("Men kichik o'lchamli pitsa buyurtma qildim.")

  case .medium:
    print("Men o'rta o'lchamli pitsa buyurtma qildim.")

   case .large:
     print("Men katta o'lchamli pitsa buyurtma qildim.")
}

Natija:

Men o'rta o'lchamli pitsa buyurtma qildim.

Yuqoridagi misolda small, medium, large qiymatlarga ega PizzaSize nomli enum yaratdik. Quyidagi qatorga e'tibor bering:

var size = PizzaSize.medium

Bu yerda size enum o'zgaruvchisiga medium qiymatini tayinlayapmiz.

Biz size enum o'zgaruvchisini switch operatori ichida ishlatdik. Va qiymat har bir case operatorining qiymati bilan taqqoslanadi.

Qiymat case .medium ga mos kelgani uchun case ichidagi operator bajariladi.

Enum Caselarini aylanish

Swiftda enumni aylanish uchun CaseIterable protocolidan foydalanamiz. Masalan,

enum Season: CaseIterable {
  ...
}

Endi enumning har bir caseni aylanish uchun allCases propertydan foydalanishimiz mumkin.

for currentSeason in Season.allCases {
   ...
}

Misol:

// Season ni CaseIterable ga moslashtirish 
enum Season: CaseIterable {
  case spring, summer, autumn, winter 
}

// barcha caslarni aylanish uchun for sikli
for currentSeason in Season.allCases {
  print(currentSeason)
}

Natija:

spring
summer
autumn
winter

Yuqoridagi misolda Season enumini CaseIterable protocoli bilan moslashtirdik.

Keyin enumning har bir caseni aylanish uchun allCases propertyni for sikli bilan ishlatdik.

Enum va rawValue

Swiftda har bir enum casega qiymat berishimiz ham mumkin. Masalan,

enum Size : Int {
  case small = 10
  case medium = 12
  ...
}

Bu yerda small va medium enum caslariga mos ravishda 10 va 12 qiymatlarini tayinladik. Bu qiymatlar raw value (xom qiymat) deyiladi.

E'tibor bering, enum nomi bilan Int dan foydalandik, bu enum caslar faqat butun sonli raw valuelarni o'z ichiga olishi mumkinligini bildiradi.

Enum Raw Valuega murojaat

Enumning raw valuega murojaat qilish uchun rawValue propertydan foydalanamiz. Masalan,

// raw valuega murojaat 
Size.small.rawValue

Bu yerda small casening qiymatiga murojaat qildik.

Misol:

enum Size : Int {
  case small = 10
  case medium = 12
  case large = 14
}

// small casening raw valuega murojaat
var result = Size.small.rawValue
print(result)

Natija:

10

Yuqoridagi misolda Int turli raw valuega ega Size nomli enum yaratdik.

Bu yerda rawValue propertysi yordamida small casening qiymatiga murojaat qildik.

Raw valuelar string, belgilar, butun sonlar yoki suzuvchi nuqtali sonlar turida bo'lishi mumkin.

Enum Associated values

Swiftda enum casega qo'shimcha ma'lumot biriktirishimiz ham mumkin. Masalan,

enum Laptop {
  
  // associated value 
  case name(String)
  ...
}

Bu yerda name case uchun String turli qiymat biriktira olamiz.

Endi associated valueni casega tayinlashimiz mumkin.

Laptop.name("Razer")

Bu yerda Razer β€” name casening associated valuesi.

Misol:

enum Laptop {

  // string qiymatni biriktirish
  case name(String)

  // butun son qiymatni biriktirish  
  case price(Int)
}

// name ga string qiymat uzatish
var brand = Laptop.name("Razer")
print(brand)

// price ga butun son qiymat uzatish
var offer = Laptop.price(1599)
print(offer)

Natija:

name("Razer")
price(1599)

Yuqoridagi misolda associated value:

  • Razer β€” name casega tayinlandi
  • 1599 β€” price casega tayinlandi

Associated values haqida ko'proq ma'lumot olish uchun Swiftda enum Associated Value mavzusiga tashrif buyuring.