Welnu, u moet iets weten over Scope Rule - Het begrijpen van de ideeën van "scope" met {... }
Lokale variabelen
Bekijk de uitvoer die is gegenereerd op basis van de voorbeeldcode. Het belangrijkste verschil moet duidelijk zijn. Dit zijn allemaal “lokale” variabelen, binnen het bereik van {...}.
int hoofd( ) { int X = 10, Y = 15; { int X = 20; { int X = 30, Y = 35; hersenen.Screen.printAt(4,30, "3e: %d, %d ", X, Y); } brain.Screen.printAt(4, 60, "2e: %d, %d", X, Y); } brain.Screen.printAt(4, 90, "1e: %d, %d", X, Y); retour 0; }
Uitgang:
3e: 30, 35 2e: 20, 15 1e: 10, 15
Het bovenstaande voorbeeld wordt gebruikt voor een snelle en gemakkelijke verduidelijking. Gebruik geen identieke verticale variabelen binnen geneste bereiken.
Hoe zit het met het plaatsen van de variabelen buiten het “main()”-blok?
Globale variabelen
Door variabelen buiten het main( )
blok te plaatsen, maar niet binnen andere functies, worden variabelen globaal bruikbaar voor alle functies in het project. Dit worden globale variabelen genoemd.
int gWaarde = 90000; // dit is globaal voor alle andere scopes int main() { Brain.Screen.setFont(fontType::mono30); = 10; { int X = 20, gWaarde = 8000; { int X = 30, gWaarde= 700; Brain.Screen.printAt(4, 30, " 3e: %d ", gValue + X); } Brain.Screen.printAt(4, 60, " 2e: %d ", gValue + X); } Brain.Screen.printAt(4, 90, " 1e: %d ", gValue + X); }
Uitgang:
3e: 730 2e: 8020 1e: 90010
De beste praktijk is om niet dezelfde identificatienamen te gebruiken voor zowel globale als lokale variabelen.
Let op: Merk op dat ik zei: “project”, niet “bestand”. Een project kan uit meer dan één bestand bestaan. Binnen één project kunt u echter niet meer dan één main( )
-functie hebben. Dit valt buiten de reikwijdte van dit artikel. Er zijn enkele aanvullende regels, zoals het gebruik van “extern” met betrekking tot globale variabelen. Dit wordt verder besproken in een andere sectie over meerdere bestanden binnen één project binnen de VEX Bibliotheek.
Wat is "naamruimte vex"?
Naamruimte valt niet noodzakelijkerwijs onder de discussie over “lokale” versus “globale” variabelen, aangezien Naamruimte geen variabele is. Echter, “namespace vex” bevat zijn eigen scope. Omdat het deel uitmaakt van de sjablooncodebasis die u in uw hele V5-programma MOET opnemen, moet de reikwijdteregel voor naamruimte in dit artikel kort worden behandeld.
Elke naamruimte is als een ruimte waarin u een reeks variabelen kunt maken, functies die betrekking hebben op die individuele ‘ruimte’. U krijgt toegang tot alle beschikbare variabelen, functies, klassen, enz. die in deze ‘ruimte’ zijn gedefinieerd.
U kunt de naamruimte online opzoeken op https://api.vexcode.cloud/v5/html/. Voor snel opzoeken kunt u ook met de rechtermuisknop op de 'vex' klikken en vervolgens op 'Ga naar definitie' klikken. U vindt een schat aan informatie over wat er beschikbaar is in de naamruimte ‘vex’.
Je kunt ze allemaal openen door het volgende te doen: vex::
Raadpleeg bijvoorbeeld de sjablooncode:
naamruimte vex gebruiken; vex::hersenen Hersenen;
Bovendien zullen alle namen, inclusief variabelen, functies, etc. die binnen deze “vex”-ruimte worden gedeclareerd, niet conflicteren met een andere “spatie” in het programma.
U kunt bijvoorbeeld besluiten om 'mijnOwnNamespace' te maken en een variabele de naam 'Brain' te geven. Het wordt niet aanbevolen om zoiets te doen, maar het programma staat het toe. Dat komt omdat dit is gedefinieerd in 'myOwnNamespace'.