Pochopení rozsahu ve VEXcode Pro V5

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.

No, potřebujete vědět o pravidle rozsahu - Porozumění myšlenkám „rozsahu“ s {... }

Místní proměnné

Sledujte výstup generovaný z ukázkového kódu. Měl by být jasný hlavní rozdíl. To vše jsou „místní“ proměnné v rozsahu {...}.

int main() {
int X = 10, Y = 15;
{
  int X = 20;
   {
     int X = 30, Y = 35;
     brain.Screen.printAt(4,30, "3rd one: %d, %d ", X, Y); 
   }
  	 brain.Screen.printAt(4, 60, "2nd one: %d, %d", X, Y); 
	}
	mozek.Screen.printAt(4, 90, "1. jedna: %d, %d", X, Y);	
	návrat 0;
}

Výstup:

3. jedna: 30, 35 
2. jedna: 20, 15 
1. jedna: 10, 15

Výše uvedený příklad slouží pro rychlé a snadné objasnění. V rámci vnořených oborů nepoužívejte identické vertikální proměnné.

Co takhle umístit proměnné mimo blok „main()“?

Globální proměnné

Umístění proměnných mimo blok main() , ale ne do jiných funkcí, učiní proměnné globálně použitelné všemi funkcemi v projektu. Tyto jsou označovány jako globální proměnné.

int gValue = 90000; // toto je globální pro všechny ostatní obory
  
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, " 3rd one: %d ", gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " 2nd one: %d ", gValue + X); 
   }
   Brain.Screen.printAt(4, 90, " 1st one: %d ", gValue + X);
}

Výstup:

3.: 730
2.: 8020 
1.: 90010

Nejlepším postupem je nepoužívat stejné názvy identifikátorů pro globální i místní proměnné.

Pozor: Všimněte si, že jsem zmínil: „projekt“, nikoli „soubor“. Projekt se může skládat z více než jednoho souboru. V rámci jednoho projektu však nemůžete mít více než jednu funkci main(). To je mimo rámec tohoto článku. Existují některá další pravidla, jako je použití „extern“ ohledně globálních proměnných. To bude dále diskutováno v jiné části týkající se více souborů v rámci jednoho projektu v rámci knihovny VEX.


Co je to „namespace vex“?

Jmenný prostor nemusí nutně spadat do diskuse o „místních“ vs. „globálních“ proměnných jako takových, protože jmenný prostor není proměnná. Avšak „namespace vex“ neobsahuje svůj vlastní rozsah. Protože je součástí základu kódu šablony, který MUSÍTE zahrnout do všech svých programů V5, pravidlo rozsahu pro jmenný prostor by mělo být stručně popsáno v tomto článku.

Každý jmenný prostor je jako prostor, kde můžete vytvořit sadu proměnných, funkcí vztahujících se k tomuto jednotlivému „prostoru“. Získáte přístup ke všem dostupným proměnným, funkcím, třídám atd. definovaným v tomto „prostoru“.

Jmenný prostor můžete vyhledat online na adrese https://api.vexcode.cloud/v5/html/. Pro rychlé vyhledání můžete také kliknout pravým tlačítkem na „vex“ a poté kliknout na „Přejít na definici“. Najdete velké množství informací o tom, co je k dispozici z jmenného prostoru „vex“.

úryvek kódu5.png

Ke kterémukoli z nich se dostanete takto: vex::

např. Vraťte se zpět na kód šablony:

použití jmenného prostoru vex;
vex::brain Mozek;

Navíc žádná jména včetně proměnných, funkcí atd. deklarovaná uvnitř tohoto „vex“ prostoru nebudou v konfliktu s jiným „mezerem“ v programu.

Můžete se například rozhodnout vytvořit „myOwnNamespace“ a pojmenovat proměnnou „Brain“. Nedoporučuje se něco takového dělat, ale program to umožní. To proto, že toto je definováno v rámci „myOwnNamespace“.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: