IBM Lotus Symphony
|
下面描述了 Lotus® Symphony™ Basic 中过程和函数的基本用法。
![]() |
创建新模块时,Lotus Symphony Basic 会自动插入一个名为“Main”的子例程。此缺省名称与 Lotus Symphony Basic 项目的顺序或起始点无关。您完全可以将此子例程重命名为其他名称。 |
过程(SUBS)和函数(FUNCTIONS)可将程序分割成多个逻辑片段,从而有助于保持结构化概述。
使用过程和函数的一个好处是,为某个项目开发的含有任务组件的程序代码,同样可以用于其他项目。
可以向过程和函数传送变量。必须对所需参数声明子例程或函数:
SUB SubName( Parameter1 As Type, Parameter2 As Type,... )
程序代码
END SUB
调用子例程时使用以下语法:
SubName(Value1, Value2,...)
传送到子例程的参数必须与子例程声明中指定的参数匹配。
相同过程也适用于函数。此外,函数始终返回函数结果。通过为函数名称指定返回值,可定义函数的结果:
FUNCTION FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
程序代码
FunctionName=Result
End Function
调用函数时使用以下语法:
Variable=FunctionName(Parameter1, Parameter2,...)
![]() |
您也可以使用标准名称来调用过程或函数:Library.Module.Macro() 例如,要从 Gimmicks 库中调用 Autotext 宏,请使用以下命令:Gimmicks.AutoText.Main() |
可以通过引用或值将参数传送到子例程或函数。除非特别指定,否则通常是通过引用传送参数。这意味着子例程或函数可以获取该参数,并可以读取和修改参数值。
如果希望通过值传送参数,请在调用子例程或函数时,在参数前插入关键字“ByVal”,例如:
Result = Function( ByVal Parameter)
在这种情况下,函数不会修改参数的原始内容,因为它获得的仅仅是参数值而不是参数本身。
在子例程或函数中定义的变量仅在该过程内有效。这种变量通常称为“局部”变量。在很多情况下,您希望定义的变量在所有过程中、所有库的各个模块中或者在退出子例程或函数后仍有效。
GLOBAL VarName As TYPENAME
只要 Lotus Symphony 会话未结束,变量就一直有效。
PUBLIC VarName As TYPENAME
变量在所有模块中均有效。
PRIVATE VarName As TYPENAME
变量仅在当前模块中有效。
DIM VarName As TYPENAME
变量仅在当前模块中有效。
通过设置 CompatibilityMode(true) 强制私有变量在模块之间成为私有的。
REM ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hello"
print "in module1 : ", myText
End Sub
REM ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Now returns empty string
' (or rises error for Option Explicit)
print "Now in module2 : ", myText
End Sub
STATIC VarName As TYPENAME
在下次进入函数或子例程之前,变量一直保留该值。该声明必须位于子例程或函数中。
与变量一样,函数名称后必须含有类型声明字符或由“As”与相应关键字(位于参数列表后)指示的类型,以定义函数返回值的类型。例如:
Function WordCount(WordText as String) as Integer