Уроки програмного забезпечення | Hamuv

Підручники з програмного забезпечення => Swift => Тема розпочата: Hamuv від Квт. 07, 2025, 02:08 PM

Назва: Swift-та Перечислення (Enumeration): Тўлиқ Қўлланма ва Код Намуналари
Відправено: Hamuv від Квт. 07, 2025, 02:08 PM

Swift програмалаш тилида перечислення (enumeration) — бу маълум бир турдаги қийматлар тўпламини аниқ ва тузилган шаклда ифодалаш имконини берувчи муҳим восита. У объектга йўналтирилган програмалаш (ООП) ва қиймат типлари билан ишлашда кенг қўлланади. Ушбу мақолада Swift-даги enum нинг асосий хусусиятлари, унинг қўлланиш усуллари ва амалий код намуналарини кўриб чиқамиз. SEO учун оптималлаштирилган ва фойдаланувчилар учун қулай мазмун тайёрлашга эътибор берамиз.

Перечислення (Enum) деган нима?
Swift-да enum — бу бир гуруҳга тегишли бўлган қийматларнинг номланган тўпламини яратиш учун ишлатиладиган тип. Масалан, ҳафта кунлари, йўналишлар ёки об-ҳаво ҳолатлари каби маълум бир категорияга оид қийматларни ифодалашда фойдаланилади. Перечислення кодни ўқишга қулай ва хавфсиз қилади, чунки у фақат белгиланган қийматлар билан ишлайди.

Swift-да Перечисленняни Яратиш
Перечисленняни яратиш учун enum калит сўзидан фойдаланилади, сўнг унинг элементлари (cases) кўрсатилади.

Оддий намуна:
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-да перечислення фақат номлар билан чекланмайди — уларга ассоциацияланган қийматлар қўшиш мумкин. Бу уларни янада кенгайтиради.

Намуна:
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 ёки бошқа типда бўлиши мумкин.

Намуна:
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 типида хом қийматлар берилган.

Амалий Мисол: Перечислення билан Ишлаш
Қуйидаги мисолда перечислення ёрдамида транспорт воситаларининг ҳолатини бошқарамиз:
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) // Натижа: Транспорт таъмирда.


Перечисленнянинг Афзалликлари ва Чекловлари
Афзалликлар:

Чекловлар:

Хулоса
Swift-да перечислення (enum) — бу кодни тузилган, хавфсиз ва ўқишга қулай қилиш учун энг яхши воситалардан бири. У хом қийматлар ва ассоциацияланган қийматлар билан кенгайтирилиши мумкин, бу эса уни кўплаб вазиятларда фойдали қилади. Юқоридаги намуналарни ўзингиз синаб кўринг ва Swift лойиҳаларингизда уларни қўлланг!