Wat is een opsomming van programmeertalen?

Afkorting voor opsomming, een type opsommingstabel kan worden gevonden in C (ANSI, niet de originele K&R), C ++ en C #. Het idee is dat in plaats van een int te gebruiken om een ​​set waarden weer te geven, in plaats daarvan een type met een beperkte set waarden wordt gebruikt.

Als we bijvoorbeeld de kleuren van de regenboog gebruiken

  1. Rood
  2. Oranje
  3. Geel
  4. Groen
  5. Blauw
  6. Indigo
  7. paars

Als enums niet bestond, zou je een kunnen gebruiken #bepalen (in C) of const in C ++ / C # om deze waarden op te geven. Eg

Te veel punten om te tellen!

Het probleem hiermee is dat er veel meer ints zijn dan kleuren. Als violet de waarde 7 heeft en het programma een waarde van 15 toekent aan een variabele, is dit duidelijk een bug, maar wordt deze mogelijk niet gedetecteerd omdat 15 een geldige waarde is voor een int.

Enums to the Rescue

Een opsomming is een door de gebruiker gedefinieerd type dat bestaat uit een set benoemde constanten die opsommers worden genoemd. De kleuren van de regenboog zouden als volgt in kaart worden gebracht .:

Intern gebruikt de compiler een int om deze vast te houden en als er geen waarden worden opgegeven, is rood 0, oranje is 1 enz..

Wat is het voordeel van een opsomming?

Het punt is dat regenboogkleuren is een type en alleen andere variabelen van hetzelfde type kunnen hieraan worden toegewezen. C is gemakkelijker in de omgang (dat wil zeggen minder strikt getypt), maar C ++ en C # staan ​​geen toewijzing toe tenzij je het forceert met een cast.

U zit niet vast aan deze door de compiler gegenereerde waarden, u kunt hieraan uw eigen gehele getalconstante toewijzen, zoals hier wordt weergegeven.

Het hebben van blauw en indigo met dezelfde waarde is geen vergissing, want tellers kunnen synoniemen zijn zoals scarlet en crimson.

Taalverschillen

In C moet de variabele declaratie worden voorafgegaan door het woord enum als in

In C ++ is het echter niet nodig als regenboogkleuren is een onderscheidend type dat het voorvoegsel van het enum-type niet nodig heeft.

In C # worden de waarden benaderd door de typenaam zoals in

Wat is het doel van Enums?

Het gebruik van enums verhoogt het abstractieniveau en laat de programmeur nadenken over wat de waarden betekenen in plaats van zich zorgen te maken over hoe deze worden opgeslagen en benaderd. Dit vermindert het aantal fouten.