2

我正在最近的项目中研究 MUMPS。我有一个关于裸指标的问题。我对例程和赤裸裸的全局引用感到困惑。

谁能帮我理解例程和裸指标之间的区别?例程的语法似乎与裸指标的语法非常相似。

4

1 回答 1

7

我不确定我是否完全理解您的问题,但我怀疑您指的是常规和全局引用都以插入符号 (^) 开头的事实。

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

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)。更不用说,读起来很痛苦。

于 2010-10-13T17:50:58.873 回答