Cóż, musisz wiedzieć o Regule zakresu — Zrozumienie idei „zakresu” z {... }

Zmienne lokalne

Obserwuj dane wyjściowe wygenerowane z przykładowego kodu. Główna różnica powinna być jasna. Są to wszystkie zmienne „lokalne” w zakresie {...} .

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

Wyjście:

Trzecie: 30, 35 
Drugie: 20, 15 
Pierwsze: 10, 15

Powyższy przykład służy do szybkiego i łatwego wyjaśnienia. Nie używaj identycznych zmiennych pionowych w zagnieżdżonych zakresach.

Co powiesz na umieszczenie zmiennych poza blokiem „main()”?

Zmienne globalne

Umieszczenie zmiennych poza blokiem main() , ale nie w innych funkcjach, sprawi, że zmienne będą globalnie używane przez wszystkie funkcje w projekcie. Są one określane jako zmienne globalne.

int gWartość = 90000; // to jest globalne dla wszystkich innych zakresów
  
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, „ trzeci: %d „, gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " drugi: %d ”, gValue + X); 
   }
   Brain.Screen.printAt(4, 90, " Pierwszy: %d ”, gValue + X);
}

Wyjście:

Trzecie: 730
Drugie: 8020 
Pierwsze: 90010

Najlepszą praktyką jest nieużywanie tych samych nazw identyfikatorów zarówno dla zmiennych globalnych, jak i lokalnych.

Uwaga: Zwróć uwagę, że wspomniałem: „projekt”, a nie „plik”. Projekt może składać się z więcej niż jednego pliku. Jednak w jednym projekcie nie można mieć więcej niż jednej funkcji main() . To wykracza poza zakres tego artykułu. Istnieje kilka dodatkowych zasad, takich jak używanie „extern” w odniesieniu do zmiennych globalnych. Zostanie to dokładniej omówione w innej sekcji dotyczącej wielu plików w jednym projekcie w Bazie wiedzy.


Co to jest „przestrzeń nazw vex”?

Przestrzeń nazw niekoniecznie wchodzi w zakres dyskusji na temat zmiennych „lokalnych” i „globalnych” per se, ponieważ przestrzeń nazw nie jest zmienną. Jednak „namespace vex” zawiera własny zakres. Ponieważ jest to część bazy kodu szablonu, którą MUSISZ uwzględnić w całym programie V5, reguła zakresu dla przestrzeni nazw powinna zostać pokrótce omówiona w tym artykule.

Każda przestrzeń nazw jest jak przestrzeń, w której można utworzyć zestaw zmiennych, funkcji odnoszących się do tej indywidualnej „przestrzeni”. Uzyskujesz dostęp do wszystkich dostępnych zmiennych, funkcji, klas itp. zdefiniowanych w tej „przestrzeni”.

Możesz sprawdzić przestrzeń nazw online pod adresem https://api.vexcode.cloud/v5/html/. Aby szybko wyszukać, możesz również kliknąć prawym przyciskiem myszy „Vex”, a następnie kliknąć „Przejdź do definicji”. Znajdziesz mnóstwo informacji o tym, co jest dostępne w przestrzeni nazw „vex”.

codenippet5.png

Możesz uzyskać dostęp do każdego z nich, wykonując: vex::

np. Wróć do kodu szablonu:

używanie przestrzeni nazw vex;
vex::mózg Mózg;

Ponadto wszelkie nazwy zawierające zmienne, funkcje itp. zadeklarowane w tej przestrzeni „vex” nie będą kolidować z inną „spacją” w programie.

Na przykład możesz zdecydować się na utworzenie „myOwnNamespace” i nazwać zmienną „Mózg”. Nie zaleca się robienia czegoś takiego, ale program na to pozwoli. Dzieje się tak, ponieważ jest to zdefiniowane w „myOwnNamespace”.

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