Swift програмалаш тилида перечислення (enumeration) — бу маълум бир турдаги қийматлар тўпламини аниқ ва тузилган шаклда ифодалаш имконини берувчи муҳим восита. У объектга йўналтирилган програмалаш (ООП) ва қиймат типлари билан ишлашда кенг қўлланади. Ушбу мақолада Swift-даги enum нинг асосий хусусиятлари, унинг қўлланиш усуллари ва амалий код намуналарини кўриб чиқамиз. SEO учун оптималлаштирилган ва фойдаланувчилар учун қулай мазмун тайёрлашга эътибор берамиз.
Перечислення (Enum) деган нима?
Swift-да enum — бу бир гуруҳга тегишли бўлган қийматларнинг номланган тўпламини яратиш учун ишлатиладиган тип. Масалан, ҳафта кунлари, йўналишлар ёки об-ҳаво ҳолатлари каби маълум бир категорияга оид қийматларни ифодалашда фойдаланилади. Перечислення кодни ўқишга қулай ва хавфсиз қилади, чунки у фақат белгиланган қийматлар билан ишлайди.
Swift-да Перечисленняни Яратиш
Перечисленняни яратиш учун enum калит сўзидан фойдаланилади, сўнг унинг элементлари (cases) кўрсатилади.
Оддий намуна:
Ко Select
enum HaftaKuni {
case dushanba
case seshanba
case chorshanba
case payshanba
case juma
case shanba
case yakshanba
}
let bugun = HaftaKuni.juma
print(bugun) // Натижа: juma
Бу мисолда HaftaKuni номли перечислення яратилди, унда ҳафта кунлари кўрсатилган.
Ассоциацияланган Қийматлар (Associated Values)
Swift-да перечислення фақат номлар билан чекланмайди — уларга ассоциацияланган қийматлар қўшиш мумкин. Бу уларни янада кенгайтиради.
Намуна:
Ко Select
enum ObHavo {
case quyoshli(derece: Int)
case yomg'irli(yog'ingarchilik: Double)
case shamolli(teizlik: Int)
}
let bugungiObHavo = ObHavo.quyoshli(derece: 25)
switch bugungiObHavo {
case .quyoshli(let derece):
print("Бугун қуёшли, температура: \(derece)°C")
case .yomg'irli(let yog'ingarchilik):
print("Ёмғирли, ёғингарчилик: \(yog'ingarchilik) мм")
case .shamolli(let tezlik):
print("Шамолли, тезлик: \(tezlik) км/с")
}
// Натижа: Бугун қуёшли, температура: 25°C
Бу мисолда ObHavo перечисленнясига турли типдаги қийматлар (Int, Double) қўшилган.
Хом Қийматлар (Raw Values)
Swift-да перечислення элементларига хом қийматлар (raw values) бериш мумкин. Бу қийматлар String, Int ёки бошқа типда бўлиши мумкин.
Намуна:
Ко Select
enum Yo'nalish: String {
case shimol = "Північ"
case janub = "Південь"
case sharq = "Схід"
case g'arb = "Захід"
}
let yo'nalish = Yo'nalish.shimol
print(yo'nalish.rawValue) // Натижа: Північ
Бу мисолда Yo'nalish перечисленнясига String типида хом қийматлар берилган.
Амалий Мисол: Перечислення билан Ишлаш
Қуйидаги мисолда перечислення ёрдамида транспорт воситаларининг ҳолатини бошқарамиз:
Ко Select
enum TransportHolati {
case ishlayapti
case to'xtabTuribdi
case ta'mirda
}
func holatniTekshir(_ holat: TransportHolati) {
switch holat {
case .ishlayapti:
print("Транспорт ишламоқда.")
case .to'xtabTuribdi:
print("Транспорт тўхтаб турибди.")
case .ta'mirda:
print("Транспорт таъмирда.")
}
}
let mashinaHolati = TransportHolati.ta'mirda
holatniTekshir(mashinaHolati) // Натижа: Транспорт таъмирда.
Перечисленнянинг Афзалликлари ва Чекловлари
Афзалликлар:
- Коднинг аниқлиги ва хавфсизлиги (фақат белгиланган қийматлар ишлатилади).
- Ассоциацияланган қийматлар билан кенг функционаллик.
- switch оператори билан мукаммал мослик.
Чекловлар:
- Мутатор усуллар (mutating methods) сифатида фақат структуралар ва класслардаги каби тўлиқ ишламайди.
- Улардан мерос олиш мумкин эмас.
Хулоса
Swift-да перечислення (enum) — бу кодни тузилган, хавфсиз ва ўқишга қулай қилиш учун энг яхши воситалардан бири. У хом қийматлар ва ассоциацияланган қийматлар билан кенгайтирилиши мумкин, бу эса уни кўплаб вазиятларда фойдали қилади. Юқоридаги намуналарни ўзингиз синаб кўринг ва Swift лойиҳаларингизда уларни қўлланг!