Скраћено за набрајање, енум променљив тип може се наћи у Ц (АНСИ, није оригинални К&Р), Ц ++ и Ц #. Идеја је да уместо коришћења ан инт за представљање скупа вредности користи се тип са ограниченим скупом вредности.
На пример, ако користимо боје дуге, које су
- Црвено
- Наранџасте
- Жута
- Зелен
- Плави
- Индиго
- Љубичаста
Ако енуми не постоје, можете користити а #дефинисати (у Ц) или цонст у Ц ++ / Ц # да бисте одредили ове вредности. На пример
Превише бројева за рачунати!
Проблем са тим је што постоји још много тога интс него боје. Ако љубичица има вредност 7 и програм променљивој додељује вредност 15, тада је очигледно грешка, али можда неће бити откривена јер је 15 валидна вредност за инт.
Припада Ресцуеу
Енум је кориснички дефинисани тип који се састоји од скупа именованих константа које се називају пописивачи. Боје дуге би се пресликале овако:
Сада интерно, преводилац ће користити инт да их држи, а ако се не додају вредности, црвена ће бити 0, наранџаста је 1 итд.
Поента је у томе раинбовцолорс је тип и само друге варијабле истог типа могу се доделити томе. Ц иде лакше (тј. Мање строго куцано), али Ц ++ и Ц # неће дозволити додељивање уколико га не примените користећи цаст.
Ниси заглављен са овим преводилац генериране вриједности, можете им додијелити властити цијели број константе као што је приказано овдје.
Имати плаву и индиго исту вредност није грешка јер би пописивачи могли укључивати синониме као што су гримизни и гримизни.
Језичке разлике
У Ц, тхе променљива декларацији мора претходити реч енум као у
У Ц ++ ипак није потребан као раинбовцолорс је различит тип коме није потребан префикс типа енум.
У Ц # вредностима приступа се имену типа као у
Шта је поента Енума?
Употреба енума повећава ниво апстракције и омогућава програмеру да размишља о томе шта вредности значе, а не да брине о томе како су сачуване и којима се приступа. То смањује појаву грешака.
Ево примера. Имамо сет семафора са три сијалице- црвено, жута и зелен. У Великој Британији се редослед семафора мења у ове четири фазе.
- Црвено - Саобраћај је заустављен.
- И једно и друго Црвено и Жута - Саобраћај је и даље заустављен, али светла ће се пребацити у зелено.
- Зелен - Саобраћај се може кретати.
- Жута - Упозорење о непосредној промени у црвено.
Пример семафора
Светлима се управља тако што се на доња дела уписују три бита контролног бајта. Они су изложени као битни образац испод у бинарном формату где РИГ представљају три бита. Ако је Р 1, упаљено је црвено светло итд.
У овом случају, лако је видети да четири горе наведена стања одговарају вредностима 4 = Црвено на, 6 = Црвено + Жута оба на, 1 = Зелен на и 2 = Жута на.
Са овом функцијом
Коришћење класе уместо Енума
У Ц ++ и Ц # требало би да створимо класу, а затим преоптерећење оператор | допустити ИЛИ инг типова семафори.
Коришћењем енума спречавамо проблеме са додељивањем других битова бајту за контролу сијалице. Може се десити да неки други битови контролишу само-тестирање или прекидач „Греен Лане“. У том случају, грешка која омогућава постављање ових битова у нормалној употреби може пропасти.
Да будемо сигурни, маскирали бисмо делове у СетТраффицлигхтс ()функција тако да без обзира на то која вредност је пренета, мењају се само три доња бита.
Закључак
Енумс има ове предности:
- Ограничавају вредности које променљива енум може узети.
- Присиљавају вас да размишљате о свим могућим вриједностима које енум може узети.
- Они су константа, а не број, повећавајући читљивост овог изворни код