The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Du behöver veta om omfattningsregeln - Förstå begreppen "omfattning" med {... }
Lokala variabler
Observera utdata som genereras från exempelkoden. Det borde vara tydligt vad den huvudsakliga skillnaden är. Dessa är alla "lokala" variabler, inom dess {...} omfattning.
int main() {
int X = 10, Y = 15;
{
int X = 20;
{
int X = 30, Y = 35;
brain.Screen.printAt(4, 30, "3:e: %d, %d ", X, Y);
}
brain.Screen.printAt(4, 60, "2:a: %d, %d", X, Y);
}
brain.Screen.printAt(4, 90, "1:a: %d, %d", X, Y);
returnera 0;
}
Produktion:
3:e: 30, 35 2:a: 20, 15 1:a: 10, 15
Exemplet ovan används för snabb och enkel förtydligande. Använd inte identiska vertikala variabler inom kapslade omfattningar.
Vad sägs om att placera variablerna utanför blocket "main()"?
Globala variabler
Att placera variabler utanför main() blocket, men inte inom några andra funktioner, gör variabler globalt användbara av alla funktioner i projektet. Dessa kallas globala variabler.
int gValue = 90000; // detta är globalt för alla andra scope
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, " 3:e: %d ", gValue + X);
}
Brain.Screen.printAt(4, 60, " 2:a: %d ", gValue + X);
}
Brain.Screen.printAt(4, 90, " 1:a: %d ", gValue + X);
}
Produktion:
3:e: 730 2:a: 8020 1:a: 90010
Det bästa är att inte använda samma identifierarnamn för både globala och lokala variabler.
Uppmärksamhet: Observera att jag nämnde: ”projekt”, inte ”fil”. Ett projekt kan bestå av mer än en fil. Inom ett enda projekt kan du dock inte ha mer än en main() funktion. Detta ligger utanför ramen för den här artikeln. Det finns några ytterligare regler, som att använda "extern" gällande globala variabler. Detta kommer att diskuteras vidare i ett annat avsnitt angående flera filer inom ett enda projekt inom VEX-biblioteket.
Vad är "namnrymdsvex"?
Namnrymden faller inte nödvändigtvis in i diskussionen om "lokala" kontra "globala" variabler i sig, eftersom namnrymden inte är en variabel. Emellertid innehåller "namnrymds-vex" sittomfång. Eftersom det är en del av mallkodbasen som du MÅSTE inkludera i alla dina V5-program, bör omfattningsregeln för namnrymden kortfattat behandlas i den här artikeln.
Varje namnrymd är som ett utrymme där du kan skapa en uppsättning variabler, funktioner som hör till det enskilda "utrymmet". Du får tillgång till alla tillgängliga variabler, funktioner, klasser etc. som definierats inuti detta "utrymme".
Du kan söka efter namnrymden online på https://api.vexcode.cloud/v5/html/. För snabb sökning kan du också högerklicka på "vex" och sedan klicka på "Gå till definition". Du hittar en mängd information om vad som är tillgängligt från namnrymden "vex".
Du kan komma åt vilken som helst av dem genom att göra: vex::
t.ex. Se tillbaka på mallkoden:
använder namnrymden vex; vex::brain Hjärna;
Dessutom kommer inga namn, inklusive variabler, funktioner etc. som deklareras inuti detta "vex"-utrymme, att konfliktera med ett annat "utrymme" i programmet.
Du kan till exempel välja att skapa "mittEgetNamnrymd" och ge variabeln titeln "Hjärna". Det rekommenderas inte att du gör något sådant, men programmet tillåter det. Det beror på att detta är definierat i "myOwnNamespace".