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

Tin*_*ina 2 mumps

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

任何人都可以帮助我理解例程和裸指标之间的区别吗?例程的语法似乎与裸指示器的语法非常相似.

Rob*_*her 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.
Run Code Online (Sandbox Code Playgroud)

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

S ^MYGLOB(1,1)="one"
S ^MYGLOB(1,2)="two"
Run Code Online (Sandbox Code Playgroud)

相当于

S ^MYGLOB(1,1)="one"
S ^(2)="two" ;naked, ewww
Run Code Online (Sandbox Code Playgroud)

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