文章
· 九月 5, 2023 阅读大约需 2 分钟

第十九章 ObjectScript - 执行例程

第十九章 ObjectScript - 执行例程

执行例程

执行例程时,使用DO命令,如下所示:

 do ^routinename

要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令:

 do label^routinename

 do label^routinename(arguments)

要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename$$label^routinename(参数)形式的表达式。例如:

 set myvariable=$$label^routinename(arguments)

在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如:

 do label
 do label(arguments)
 set myvariable=$$label(arguments)

在所有情况下,传递的参数可以是文字值、表达式或变量名。

New 命令

IRIS提供了另一种机制,使能够控制例程中变量的作用域:NEW命令。此命令的参数是一个或多个变量名,以逗号分隔的列表表示。变量必须是公共变量,不能是Global

该命令为变量建立一个新的有限上下文(可能已经存在,也可能不存在)。例如,考虑下面的例程:

 ; demonew 
 ; routine to demo NEW
 NEW var2
 set var1="abc"
 set var2="def"
 quit

运行完这个例程后,变量var1可用,变量var2不可用,如下例所示:

TESTNAMESPACE>do ^demonew

TESTNAMESPACE>write var1
abc
TESTNAMESPACE>write var2

write var2
^
<UNDEFINED> *var2

如果该变量在使用NEW之前已经存在,那么在NEW作用域结束后,该变量仍然存在,并保留其先前的值。例如,考虑下面的Terminal会话,它使用前面定义的例程:

TESTNAMESPACE>set var2="hello world"

TESTNAMESPACE>do ^demonew

TESTNAMESPACE>write var2
hello world
讨论 (0)1
登录或注册以继续