第八章 ObjectScript - 变量的可用性和范围
变量的可用性和范围
ObjectScript
支持以下程序流程,(在大多数方面)与其他编程语言支持的程序流程类似:
- 用户可能从用户界面调用方法。
- 该方法执行一些语句,然后调用另一个方法。
- 该方法定义了局部变量
A
、B
和C
。
变量 A
、B
和 C
在此方法的范围内。它们对于该方法是私有的。
该方法还定义了Global
^D
。
- 第二个方法结束,控制返回到第一个方法。
- 第一个方法恢复执行。此方法不能使用不再定义的变量
A
、B
和 C。它可以使用^D
,因为该变量立即保存到数据库中。
变量作用域总结
有几个因素控制变量在定义它的方法之外是否可用。在讨论这些之前,有必要指出以下环境细节:
-
IRIS
实例包含多个命名空间,其中包括多个系统命名空间,可能还包括定义的多个命名空间。
命名空间是任何代码运行的环境。
- 可以在命名空间中同时运行多个进程。在典型的应用程序中,许多进程同时运行。
下表总结了可用变量的位置:
变量可用性,按变量类型细分... | 在定义它的方法之外(但在同一进程中) | 在同一命名空间的其他进程中 | 在同一 IRIS 实例内的其他命名空间中 |
---|---|---|---|
局部变量,私有范围*
|
No |
No |
No |
局部变量,公共作用域 | Yes |
No |
No |
局部百分比变量 | Yes |
No |
No |
全局变量Global (不是百分比) |
Yes |
Yes |
除非Global 映射允许这样做†
|
Global 百分比变量 |
Yes |
Yes |
Yes |
*
默认情况下,方法中定义的变量是该方法私有的,如前所述。此外,在方法中,可以将变量声明为公共变量,尽管这种做法不是首选。请参阅公共列表。
†
每个命名空间都有用于特定目的的默认数据库,并且可以具有允许访问其他数据库的映射。因此,Global
可用于多个命名空间,即使它不是Global
百分比变量。
网友评论