跳轉到內容

Futurebasic/語言/參考/begin globals

來自華夏公益教科書,自由的教學讀物

Begin Globals

[編輯 | 編輯原始碼]

✔ 外觀 ✔ 標準 ✔ 控制檯

begin globals
  [statements including variable declarations]
end globals

begin globalsend globals 語句分別表示全域性變數宣告部分的開始和結束。全域性變數是在程式所有部分都“可見”的變數:也就是說,當進入或退出本地函式時,它會保持其值。透過合理放置 begin globals...end globals 語句,您還可以建立對某些本地函式而言是“全域性”的變數,而對其他函式而言則不是。

begin globalsend globals 是“非可執行”語句,因此您無法透過將它們放在條件執行結構(如 long if...end if)中來改變其效果。但是,您可以透過將它們放在 compile long if 塊中來有條件地包含或排除它們。

您可以在程式中包含任意數量的 begin globals...end globals 對,儘管通常全域性變數都定義在一個靠近程式開頭的單獨部分中。您還可以在本地函式中包含 begin globals...end globals 對。它們必須在本地函式中成對出現,並且通常應該在程式的“主”部分中成對出現(“主”部分由所有本地函式之外的那些行組成)。當您在“主”部分包含 begin globals...end globals 部分時,它不應包含任何本地函式,否則變數可能以不可預測的方式被作用域化。

當變數在“主”部分中的第一次出現出現在 begin globals...end globals 部分中時,該變數被宣告為全域性變數,對出現在該部分之後的每個本地函式都可見。在“主”部分中的所有其他變數對“主”部分都是本地的。重要提示:FB 在程式開頭放置一個“隱式”的 begin globals 語句。這意味著預設情況下,在“主”部分中宣告的所有變數都是全域性的。如果您希望在“主”部分中宣告的任何變數對“主”部分都是本地的,則必須在“主”部分中包含 end globals 語句。

當變數在本地函式中的第一次出現出現在 begin globals...end globals 部分中時,該變數被宣告為全域性變數,對該函式及其下面的每個本地函式都可見。如果該變數在“主”部分中的第一次出現出現在宣告為全域性變數的函式的後面,那麼該變數在“主”部分中也是全域性的。本地函式中的所有其他變數對該函式都是本地的,除非它們在之前的某個 begin globals...end globals 部分中被宣告為全域性變數。

關於全域性變數,FB 的預設行為不同於 FutureBasic II 的行為。如果您在程式中既不包含 begin globals 語句,也不包含 end globals 語句,那麼這兩個版本的行為如下所示

FutureBasic II:在“主”部分中宣告的所有變數對“主”部分都是本地的。

現代 FB:在“主”部分中宣告的所有變數都是全域性的。

如果您有一個 FutureBasic II 程式,其中不包含 end globals 語句,則應在程式碼開頭(在宣告任何變數之前)新增 end globals 語句,以便它在 FB 中按預期執行。如果您的 FutureBasic II 程式中已經包含 end globals 語句,則不應該更改它。

end globals

語言參考

華夏公益教科書