Eh bien, vous devez connaître la règle de portée - Comprendre les idées de « portée » avec {... }

Variables locales

Observez la sortie générée à partir de l'exemple de code. Il devrait être clair sur la principale différence. Ce sont toutes des variables « locales », dans sa portée {...} .

int main( ) {
int X = 10, Y = 15 ;
{
  int X = 20 ;
   {
     int X = 30, Y = 35 ;
     brain.Screen.printAt(4,30, "3ème : %d, %d ", X, Y); 
   }
  	 brain.Screen.printAt(4, 60, "2e : %d, %d", X, Y); 
	}
	brain.Screen.printAt(4, 90, "1er : %d, %d", X, Y);	
	renvoie 0 ;
}

Sortir:

3e : 30, 35 
2e : 20, 15 
1er : 10, 15

L'exemple ci-dessus est utilisé pour une clarification rapide et facile. N'utilisez pas de variables verticales identiques dans des étendues imbriquées.

Que diriez-vous de mettre les variables en dehors du bloc « main( ) » ?

Variables globales

Placer des variables en dehors du bloc main( ) , mais pas dans d'autres fonctions, rendra les variables globalement utilisables par toutes les fonctions dans le projet. Celles-ci sont appelées variables globales.

int gValue = 90000 ; // ceci est global à toutes les autres portées
  
int main() {

  Brain.Screen.setFont(fontType::mono30);
  entier X = 10 ;
  {
      int X = 20, gValue = 8000 ;
      {
         int X = 30, gValue= 700 ;
         Brain.Screen.printAt(4, 30, " 3ème : %d ", gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " 2e : %d ", gValeur + X); 
   }
   Brain.Screen.printAt(4, 90, " 1er : %d ", gValeur + X);
}

Sortir:

3e : 730
2e : 8020 
1er : 90010

La meilleure pratique consiste à ne pas utiliser les mêmes noms d'identifiant pour les variables globales et locales.

Attention : Notez que j'ai mentionné : « projet », et non « fichier ». Un projet peut comprendre plusieurs fichiers. Cependant, dans un même projet, vous ne pouvez pas avoir plus d'une fonction main( ) . Cela sort du cadre de cet article. Il existe quelques règles supplémentaires comme l'utilisation de « extern » concernant les variables globales. Ceci sera discuté plus en détail dans une autre section concernant plusieurs fichiers dans un seul projet dans la base de connaissances.


Qu'est-ce que « l'espace de noms vex » ?

L'espace de noms n'entre pas nécessairement dans la discussion des variables « locales » par rapport aux « globales » en soi, puisque l'espace de noms n'est pas une variable. Cependant, "namespace vex" contient sa propre portée. Comme il fait partie de la base de code du modèle que vous DEVEZ inclure dans tout votre programme V5, la règle de portée pour l'espace de noms doit être brièvement couverte dans cet article.

Chaque espace de noms est comme un espace où vous pouvez créer un ensemble de variables, des fonctions appartenant à cet « espace » individuel. Vous accédez à toutes les variables, fonctions, classes, etc. disponibles définies à l'intérieur de cet "espace".

Vous pouvez rechercher l'espace de noms en ligne sur https://api.vexcode.cloud/v5/html/. Pour une recherche rapide, vous pouvez également cliquer avec le bouton droit sur "vex", puis cliquer sur "Aller à la définition". Vous trouverez une mine d'informations sur ce qui est disponible à partir de l'espace de noms « vex ».

codesnippet5.png

Vous pouvez accéder à n'importe lequel d'entre eux en faisant : vex ::

par exemple. Reportez-vous au code du modèle :

en utilisant l'espace de noms vex;
vex::brain Cerveau ;

De plus, tous les noms, y compris les variables, les fonctions, etc. déclarés à l'intérieur de cet espace « vex » n'entreront pas en conflit avec un autre « espace » dans le programme.

Par exemple, vous pouvez décider de créer « myOwnNamespace » et intituler une variable « Brain ». Il n'est pas recommandé de faire quelque chose comme ça, mais le programme le permettra. C'est parce que cela est défini dans "myOwnNamespace".

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