了解 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.

那么,你需要了解范围规则 - 理解 {... }的“范围”的想法

局部变量

观察示例代码生成的输出。 主要区别应该很清楚。 这些都是“局部”变量,在其 {...} 范围内。

int main( ) {
int X = 10, Y = 15;
{
  整数 X = 20;
   {
     int X = 30,Y = 35;
     Brain.Screen.printAt(4,30, "第三个: %d, %d ", X, Y); 
   }
  	 Brain.Screen.printAt(4, 60, "第二个: %d, %d", X, Y); 
	}
	Brain.Screen.printAt(4, 90, "第一个: %d, %d", X, Y);	
	返回0;
}

输出:

第 3 个:30, 35 
第 2 个:20, 15 
第 1 个:10, 15

使用上面的示例是为了快速、轻松地进行说明。 不要在嵌套范围内使用相同的垂直变量。

将变量放在“main()”块之外怎么样?

全局变量

将变量放在 main( ) 块之外,但不在任何其他函数内,将使变量可供项目中的所有函数全局使用。 这些被称为全局变量。

int gValue = 90000; // 这对所有其他作用域都是全局的
  
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, " 第三个: %d ", gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " 第二个: %d ", gValue + X); 
   }
   Brain.Screen.printAt(4, 90, " 第一个: %d ", gValue + X);
}

输出:

第三个:730
第二个:8020 
第一个:90010

最佳实践是不要对全局变量和局部变量使用相同的标识符名称。

注意: 请注意我提到的是:“项目”,而不是“文件”。 一个项目可以包含多个文件。 但是,在单个项目中,不能有多个 main( ) 函数。 这超出了本文的范围。 还有一些附加规则,例如关于全局变量使用“extern”。 这将在有关 VEX 库内单个项目内的多个文件的另一节中进一步讨论。


什么是“命名空间 vex”?

命名空间本身不一定属于“本地”变量与“全局”变量的讨论,因为命名空间不是变量。 然而,“namespace vex” 包含它自己的范围。 由于它是您必须包含在所有 V5 程序中的模板代码库的一部分,因此本文应简要介绍命名空间的范围规则。

每个命名空间就像一个空间,您可以在其中创建一组与该单独“空间”相关的变量和函数。 您可以访问此“空间”内定义的所有可用变量、函数、类等。

您可以在 https://api.vexcode.cloud/v5/html/在线查找命名空间。 为了快速查找,您还可以右键单击“vex”,然后单击“转到定义”。 您将在命名空间“vex”中找到大量可用信息。

代码nippet5.png

您可以通过执行以下操作来访问其中任何一个: vex::

例如参考模板代码:

使用命名空间 vex;
vex::大脑 大脑;

此外,在此“vex”空间内声明的任何名称(包括变量、函数等)都不会与程序中的其他“空间”冲突。

例如,您可以决定创建“myOwnNamespace”,并将变量命名为“Brain”。 不建议您这样做,但程序允许。 这是因为这是在“myOwnNamespace”中定义的。

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

Last Updated: