Welnu, u moet weten over Scope Rule - De ideeën van "scope" begrijpen met {... }
Lokale variabelen
Bekijk de uitvoer die is gegenereerd op basis van de voorbeeldcode. Het moet duidelijk zijn over het belangrijkste verschil. Dit zijn allemaal "lokale" variabelen, binnen het bereik van {...} .
int main( ) { int X = 10, Y = 15; { int X = 20; { int X = 30, Y = 35; brain.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); retourneer 0; }
Uitgang:
3e: 30, 35 2e: 20, 15 1e: 10, 15
Het bovenstaande voorbeeld wordt gebruikt voor 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); int X = 10; { int X = 20, gValue = 8000; { int X = 30, gValue= 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
Het beste is om niet dezelfde id-namen te gebruiken voor zowel globale als lokale variabelen.
Let op: Houd er rekening mee dat ik noemde: "project", niet "bestand". Een project kan uit meer dan één bestand bestaan. Binnen een enkel project kunt u echter niet meer dan één main( )
functie hebben. Dit valt buiten het bestek 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 een enkel project binnen de Knowledge Base.
Wat is "namespace vex"?
Naamruimte valt niet noodzakelijkerwijs in de bespreking van "lokale" versus "algemene" variabelen per se, aangezien naamruimte geen variabele is. Echter, “namespace vex” bevat zijn eigen scope. Aangezien het deel uitmaakt van de sjablooncodebasis die u in al uw V5-programma's MOET opnemen, moet de bereikregel voor naamruimte in dit artikel kort worden behandeld.
Elke naamruimte is als een ruimte waar 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/. Als u snel wilt zoeken, 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".
U kunt ze allemaal openen door het volgende te doen: vex::
bijv. Verwijs terug naar de sjablooncode:
het gebruik van naamruimte vex; vex::brain Brain;
Bovendien zullen alle namen, inclusief variabelen, functies, enz. die in deze "vex"-ruimte zijn gedeclareerd, niet conflicteren met een andere "spatie" in het programma.
U kunt bijvoorbeeld besluiten om 'myOwnNamespace' te maken en een variabele 'Brain' te noemen. Het is niet aan te raden om zoiets te doen, maar het programma zal het toestaan. Dat komt omdat dit is gedefinieerd in 'myOwnNamespace'.