我正在最近的项目中研究 MUMPS。我有一个关于裸指标的问题。我对例程和赤裸裸的全局引用感到困惑。
谁能帮我理解例程和裸指标之间的区别?例程的语法似乎与裸指标的语法非常相似。
我不确定我是否完全理解您的问题,但我怀疑您指的是常规和全局引用都以插入符号 (^) 开头的事实。
例程使用插入符号来区分例程和当前例程中的标签。例如:
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)。更不用说,读起来很痛苦。