变量的作用域和生命周期
From Apache OpenOffice Wiki
< ZH/Documentation/BASIC Guide
Revision as of 22:28, 16 December 2008 by G11nAutomation (talk | contribs)
Apache OpenOffice Basic 中的变量具有有限的生命周期和作用域,在此生命周期和作用域内,可以在其他程序段中读取和使用该变量。变量的保留时间和访问位置取决于其指定的位置和类型。
局部变量
在函数或过程中声明的变量称为局部变量:
Sub Test
Dim MyInteger As Integer
' ...
End Sub
局部变量仅在执行函数或过程时有效,此后将被重置为零。每次调用函数时,以前生成的值将不再可用。
要保留以前的值,必须将变量定义为 Static:
Sub Test
Static MyInteger As Integer
' ...
End Sub
公共域变量
公共域变量是使用关键字 Dim 在模块标头部分中定义的。这些变量可用于其库中的所有模块:
模块 A:
Dim A As Integer
Sub Test
Flip
Flop
End Sub
Sub Flip
A = A + 1
End Sub
模块 B:
Sub Flop
A = A - 1
End Sub
Test 函数不会更改变量 A 的值,但 Flip 函数会将其增加 1,而 Flop 函数会将其减少 1。该变量的这些更改是全局性的。
也可以使用关键字 Public 声明公共域变量(而不是使用 Dim):
Public A As Integer
公共域变量仅在执行关联的宏时可用,此后将重置该变量。
全局变量
就功能而言,全局变量与公共域变量类似,不同的是在执行关联的宏后仍会保留全局变量值。全局变量是使用关键字 Global 在模块标头部分中声明的:
Global A As Integer
私有变量
Private 变量只能在定义它们的模块中使用。可以使用关键字 Private 定义这种变量:
Private MyInteger As Integer
如果几个模块包含名称相同的 Private 变量,Apache OpenOffice Basic 将会在每次出现该名称时创建一个不同的变量。在以下示例中,模块 A 和 B 具有一个名为 C 的 Private 变量。Test 函数首先在模块 A 中设置 Private 变量,然后在模块 B 中设置 Private 变量。
模块 A:
Private C As Integer
Sub Test
SetModuleA ' Sets the variable C from module A
SetModuleB ' Sets the variable C from module B
ShowVarA ' Shows the variable C from module A (= 10)
ShowVarB ' Shows the variable C from module B (= 20)
End Sub
Sub SetmoduleeA
C = 10
End Sub
Sub ShowVarA
MsgBox C ' Shows the variable C from module A.
End Sub
模块 B:
Private C As Integer
Sub SetModuleB
C = 20
End Sub
Sub ShowVarB
MsgBox C ' Shows the variable C from module B.
End Sub
Content on this page is licensed under the Public Documentation License (PDL). |