文章目录
- 第十八章 ObjectScript - 使用例程
- 例程
- `Procedures`, `Functions`, and `Subroutines` 过程、函数和子程序
- `procedure`
- `function`
- `subroutine`
第十八章 ObjectScript - 使用例程
例程
可以将例程视为 ObjectScript
程序。例程可以从头开始编写,也可以在编译类时自动生成。
Procedures
, Functions
, and Subroutines
过程、函数和子程序
在 ObjectScript
例程中,标签定义以下代码单元之一的起点:
Procedures
过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。
过程也称为过程块。
- 函数(返回值)。
- 子例程(不返回值)。
建议使用过程Procedures
,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。
procedure
label(args) scopekeyword {zero or more lines of code QUIT returnvalue}
或者
label(args) scopekeyword {zero or more lines of code }
label
是过程的标识符。
args
是可选的以逗号分隔的参数列表。即使没有参数,也必须包含括号。
可选的scopekeyword
是以下之一(不区分大小写):
Public
- 如果指定Public
,则该过程是公共的,并且可以在例程本身之外调用。Private
(过程的默认值)。如果指定Private
,则该过程是私有的,只能由同一例程中的其他代码调用。如果尝试从另一个例程访问该过程,则会发生<NOLINE>
错误。
returnvalue
是一个可选的、要返回的单个值。要返回值,必须使用 QUIT
命令。如果不想返回值,可以省略 QUIT
命令,因为大括号表示过程结束。
过程可以将变量声明为公共变量,尽管这种做法并不被认为是现代的程序推荐。为此,可以在紧邻范围关键字之前的方括号中包含以逗号分隔的变量名称列表。
function
label(args) scopekeywordzero or more lines of code QUIT optionalreturnvalue
args
是可选的以逗号分隔的参数列表。即使没有参数,也必须包含括号。
可选的作用域关键字是 Public
(函数的默认值)或 Private
。
subroutine
label(args) scopekeywordzero or more lines of code QUIT
args
是可选的以逗号分隔的参数列表。如果没有参数,则括号是可选的。
可选的作用域关键字是 Public
(子例程的默认值)或 Private
。
下表总结了例程、子例程、函数和过程之间的差异:
Routine | Subroutine | Function | Procedure | |
---|---|---|---|---|
可以接受参数 | no | yes | yes | yes |
可以返回值 | no | no | yes | yes |
可以在例程之外调用(默认情况下) | yes | yes | yes | no |
其中定义的变量在代码执行完成后可用 | yes | yes | yes | 取决于变量的性质 |
变量可用性和范围有更多详细信息。
注:在日常用法中,通常称呼“子例程subroutine
”可以表示过程procedure
、函数function
或子例程subroutine
。