Futurebasic/语言/参考/begin globals
✔ 外观 ✔ 标准 ✔ 控制台
begin globals [statements including variable declarations] end globals
begin globals
和 end globals
语句分别表示全局变量声明部分的开始和结束。全局变量是在程序所有部分都“可见”的变量:也就是说,当进入或退出本地函数时,它会保持其值。通过合理放置 begin globals...end globals
语句,您还可以创建对某些本地函数而言是“全局”的变量,而对其他函数而言则不是。
begin globals
和 end 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
语句,则不应该更改它。