例程和裸全局指标之间的差异

时间:2010-10-13 09:45:25

标签: mumps

我在最近的项目中正在研究MUMPS。我对裸体指标有疑问。我在例程和裸全局引用之间感到困惑。

有人能帮助我理解例程和裸指标之间的区别吗?例程的语法看起来与裸指示符的语法非常相似。

1 个答案:

答案 0 :(得分:7)

我不确定我是否完全理解你的问题,但我怀疑你指的是Routine和Global引用都以插入符号开头(^)。

例程使用插入符号来区分当前例程中的例程和标签。例如:

D COMPUTATION         ; executes the COMPUTATION label in the current routine
D ^COMPUTATION        ; executes the COMPUTATION routine
D SUBCOMP^COMPUTATION ; executes the SUBCOMP label in the COMPUTATION routine.

对于变量,插入符号表示它是全局变量而不是局部变量。无论你是否使用裸引用都是这种情况(这是对你的问题的更多澄清可能是有序的,因为我理解它是赤裸裸的参考没有区别)。当然,不同之处在于裸参考,您可以删除变量名称,以及全局的最后一个下标。例如:

S ^MYGLOB(1,1)="one"
S ^MYGLOB(1,2)="two"

相当于

S ^MYGLOB(1,1)="one"
S ^(2)="two" ;naked, ewww

所有这一切,我强烈建议不要使用裸参考。它们旨在节省从命令提示符输入代码的时间,但在必须维护的代码中非常危险。例如,如果在上面两行代码之间插入了对^ OTHERGLOB的引用,则^(2)现在将引用^ OTHERGLOB(2),而不是^ MYGLOB(1,2)。更不用说,这是一个痛苦的阅读。