Nos, tudnia kell a hatókör szabályról – A „hatókör” fogalmának megértése {... }-val

Helyi változók

Figyelje meg a mintakódból generált kimenetet. Világosnak kell lennie a fő különbségről. Ezek mind „helyi” változók, a {...} hatókörén belül.

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); 
	}
	brain.Screen.printAt(4, 90, "1st one: %d, %d", X, Y);	
	return 0;
}

Kimenet:

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

A fenti példa a gyors és egyszerű tisztázásra szolgál. Ne használjon azonos függőleges változókat a beágyazott hatókörön belül.

Mit szólnál, ha a változókat a „main( )” blokkon kívülre helyeznéd?

Globális változók

Ha a változókat a main( ) blokkon kívülre helyezi, de más függvényekbe nem, a változókat globálisan minden függvény használhatja. a projektben. Ezeket globális változóknak nevezzük.

int gValue = 90000; // ez globális az összes többi hatókörre vonatkozóan
  
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);
}

Kimenet:

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

A legjobb gyakorlat az, hogy nem használja ugyanazokat az azonosítóneveket a globális és a lokális változókhoz.

Figyelem: Vegye figyelembe, hogy említettem: „projekt”, nem „fájl”. Egy projekt több fájlból is állhat. Egy projekten belül azonban nem lehet több main( ) függvény. Ez kívül esik a cikk hatókörén. Van néhány további szabály, mint például az „extern” használata a globális változókkal kapcsolatban. Ezt a Tudásbázison belüli egyetlen projekten belüli több fájlról szóló másik részben tárgyaljuk.


Mi az a „névtér vex”?

A névtér önmagában nem feltétlenül esik bele a „lokális” és a „globális” változók tárgyalásába, mivel a névtér nem változó. A „namespace vex” azonban tartalmazza a saját hatókörét. Mivel ez a sablonkód alap része, amelyet az összes V5-ös programban KÖTELEZŐ tartalmaznia, a névtérre vonatkozó hatókör-szabályt ebben a cikkben röviden ismertetni kell.

Minden névtér olyan, mint egy tér, ahol létrehozhat egy sor változót, függvényt, amelyek az adott „térhez” tartoznak. Hozzáférhet az összes elérhető változóhoz, függvényhez, osztályhoz stb., amely ezen a „területen” van definiálva.

A névteret online megkeresheti a https://api.vexcode.cloud/v5/html/címen. A gyors kereséshez kattintson a jobb gombbal a „vex” elemre, majd kattintson a „Go to Definition” elemre. Rengeteg információt talál arról, hogy mi áll rendelkezésre a „vex” névtérben.

codesnippet5.png

Bármelyikhez hozzáférhet a következőképpen: vex::

például. Lásd vissza a sablonkódot:

névtér használata vex;
vex::brain Agy;

Ezenkívül az ebben a „vex” szóközben deklarált nevek, beleértve a változókat, függvényeket stb., nem ütköznek a program másik „szóközével”.

Dönthet például úgy, hogy létrehozza a „sajatNévteret”, és a változónak „Agy” címet ad. Nem ajánlott ilyesmit csinálni, de a program megengedi. Ennek az az oka, hogy ez a "sajátnévtér"-ben van definiálva.

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

Last Updated: