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