Mumps 例程和裸全局指示器之间的差异

Mumps 例程和裸全局指示器之间的差异,mumps,Mumps,我在最近的项目中研究腮腺炎。我有一个关于裸体指示器的问题。我对常规和赤裸裸的全局引用感到困惑 有人能帮我理解常规和裸体指标之间的区别吗?例程的语法似乎与裸指示器的语法非常相似。我不确定是否完全理解您的问题,但我怀疑您指的是例程和全局引用都以插入符号(^)开头的事实 例程使用插入符号区分例程和当前例程中的标签。例如: D COMPUTATION ; executes the COMPUTATION label in the current routine D ^COMPUTATIO

我在最近的项目中研究腮腺炎。我有一个关于裸体指示器的问题。我对常规和赤裸裸的全局引用感到困惑


有人能帮我理解常规和裸体指标之间的区别吗?例程的语法似乎与裸指示器的语法非常相似。

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

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

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"
对于变量,插入符号表示它是全局变量而不是局部变量。无论您是否使用裸引用,情况都是如此(这是您的问题需要进一步澄清的地方,因为据我所知,裸引用没有任何区别)。当然,不同之处在于,对于裸引用,可以删除变量名,以及全局变量的最后一个下标。例如:

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

谢谢罗布。它帮了我很多忙。