Comprensión del alcance en VEXcode Pro V5

Bueno, necesita saber sobre la regla de alcance: comprender las ideas de "alcance" con {... }

Variables locales

Observe la salida generada a partir del código de muestra. Debe quedar clara la principal diferencia. Todas estas son variables "locales", dentro de su alcance {...} .

int main () {
int X = 10, Y = 15;
{
  int X = 20;
   {
     int X = 30, Y = 35;
     brain.Screen.printAt (4,30, "tercero: %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;
}

Producción:

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

El ejemplo anterior se utiliza para una aclaración rápida y sencilla. No utilice variables verticales idénticas dentro de ámbitos anidados.

¿Qué tal poner las variables fuera del bloque "main ()"?

Variables globales

Poner variables fuera del bloque main () , pero no dentro de ninguna otra función, hará que las variables sean utilizables globalmente por todas las funciones en el proyecto. Estos se conocen como variables globales.

int gValue = 90000; // esto es global para todos los demás ámbitos
  
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, "tercero: %d ", gValue + X); 
      }
      Brain.Screen.printAt (4, 60, "2nd one: %d ", gValue + X); 
   }
   Brain.Screen.printAt (4, 90, "1st one: %d ", gValue + X);
}

Producción:

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

La mejor práctica es no utilizar los mismos nombres de identificador para las variables globales y locales.

Atención: Tenga en cuenta que mencioné: "proyecto", no "archivo". Un proyecto puede constar de más de un archivo. Sin embargo, dentro de un solo proyecto, no puede tener más de una función main () . Esto está fuera del alcance de este artículo. Hay algunas reglas adicionales como el uso de "extern" con respecto a las variables globales. Esto se discutirá con más detalle en otra sección con respecto a varios archivos dentro de un solo proyecto dentro de la Base de conocimientos.


¿Qué es el "espacio de nombres vex"?

El espacio de nombres no entra necesariamente en la discusión de las variables “locales” frente a las “globales” per se, ya que el espacio de nombres no es una variable. Sin embargo, el "espacio de nombres vex" contiene su propio alcance. Dado que es parte de la base del código de la plantilla que DEBE incluir en todo su programa V5, la regla de alcance para el espacio de nombres debe cubrirse brevemente en este artículo.

Cada espacio de nombres es como un espacio donde puede crear un conjunto de variables, funciones pertenecientes a ese "espacio" individual. Obtiene acceso a todas las variables, funciones, clases, etc. disponibles definidas dentro de este "espacio".

Puede buscar el espacio de nombres en línea en https://api.vexcode.cloud/v5/html/. Para una búsqueda rápida, también puede hacer clic con el botón derecho en "vex" y luego hacer clic en "Ir a la definición". Encontrará una gran cantidad de información de lo que está disponible en el espacio de nombres "vex".

codesnippet5.png

Puede acceder a cualquiera de ellos haciendo: vex ::

p.ej. Consulte de nuevo el código de la plantilla:

usando el espacio de nombres vex;
vex :: cerebro Cerebro;

Además, cualquier nombre que incluya variables, funciones, etc. declarados dentro de este espacio "vex" no entrará en conflicto con otro "espacio" en el programa.

Por ejemplo, puede decidir crear "myOwnNamespace" y titular una variable "Cerebro". No se recomienda que haga algo así, pero el programa lo permitirá. Eso es porque esto se define dentro de "myOwnNamespace".