Kaj je Enum v programskih jezikih?

Kratek za naštevanje, enum spremenljivka je mogoče najti v C (ANSI, ne izvirni K&R), C ++ in C #. Ideja je ta, da namesto uporabe int za prikaz niza vrednosti se uporablja vrsta z omejenim naborom vrednosti.

Na primer, če uporabimo barve mavrice, ki so

  1. rdeča
  2. Oranžna
  3. Rumena
  4. Zelena
  5. Modro
  6. Indigo
  7. Vijolična

Če enumi ne bi obstajali, lahko uporabite a #define (v C) ali konst v C ++ / C #, da določite te vrednosti. Npr

Preveč Ints za štetje!

Problem pri tem je, da jih je še veliko več ints kot barve. Če ima vijolična vrednost 7 in program spremenljivki dodeli vrednost 15, potem je očitno napaka, vendar je ni mogoče zaznati, saj je 15 veljavna vrednost za int.

Enum do reševanja

Enum je uporabniško določen tip, ki ga sestavlja niz imenovanih konstant, imenovanih števci. Barve mavrice bi bile preslikane tako:

Zdaj bo interno prevajalnik uporabil int, da jih drži, in če vrednosti niso podane, bo rdeča 0, oranžna pa 1 itd.

Bistvo je to mavrične barve je tip in temu lahko dodelimo samo druge spremenljivke istega tipa. C je lažji (tj. Manj strogo vtipkan), vendar C ++ in C # ne bosta dovolila dodelitve, razen če ga prisilite z uporabo vloge.

instagram viewer

Saj se niste zataknili s temi prevajalnik ustvarjene vrednosti, jim lahko dodelite svojo celotno konstanto, kot je prikazano tukaj.

Imeti modro in indigo z isto vrednostjo ni napaka, saj lahko števci vključujejo sopomenke, kot sta škrlat in črno.

Jezikovne razlike

V C, the spremenljivka pred besedo mora biti deklaracija enum kot v

V C ++ pa ni potreben kot mavrične barve je ločen tip, ki ne potrebuje predpone vrste enum.

V C # do vrednosti se dostopa z imenom vrste kot v

Kaj je smisel Enumov?

Uporaba enumov poveča stopnjo abstrakcije in omogoča programerju, da razmišlja o tem, kaj pomenijo, namesto da skrbi, kako so shranjene in do katerih dostopajo. To zmanjša pojav hroščev.

Tu je primer. Imamo komplet semaforjev s tremi žarnicami - rdeča, rumena in zelena. V Veliki Britaniji se zaporedje semaforjev spreminja v teh štirih fazah.

  1. rdeča - Promet ustavljen.
  2. Oboje rdeča in Rumena - Promet se še vedno ustavi, vendar se luči kmalu spremenijo v zelene.
  3. Zelena - Promet se lahko premika.
  4. Rumena - Opozorilo o skorajšnji spremembi na rdečo.

Primer semaforja

Luči nadziramo tako, da na spodnja tri bite nadzornega bajta zapišemo. Spodaj so prikazani kot bitni vzorec v binarnem formatu, kjer RYG predstavlja tri bite. Če je R 1, utripa rdeča lučka itd.

V tem primeru je enostavno opaziti, da zgornja štiri stanja ustrezajo vrednosti 4 = rdeča na, 6 = rdeča + Rumena oba naprej, 1 = Zelena na in 2 = Rumena naprej.

S to funkcijo

Uporaba razreda namesto Enumsa

V C ++ in C # bi morali ustvariti razred in nato preobremeniti upravljavec | dovoliti ALI-ing vrst semafor.

Z uporabo enumov preprečujemo težave z dodeljevanjem drugih bitov bajtu za nadzor žarnice. Mogoče je, da nekateri drugi biti nadzorujejo samotestiranje ali stikalo "Green Lane". V tem primeru bi lahko napaka, ki omogoča normalno nastavitev teh bitov, povzročila pustoš.

Da bi bili prepričani, bi maske prikrili v SetTrafficlights ()funkcijo tako da je ne glede na to, kakšna vrednost je vnesena, se spremenijo samo spodnji trije biti.

Zaključek

Enums ima te prednosti:

  • Omejujejo vrednosti, ki jih lahko sprejme spremenljivka enum.
  • Prisilijo vas, da razmišljate o vseh možnih vrednotah, ki jih lahko zavzame enum.
  • So stalnica in ne število, ki povečujejo berljivost izvorno kodo
instagram story viewer