我在分析代码时正在学习 Mumps 语言有一个疑问是
B%% 和 %%B 有什么区别。
但是参考文档我只看到 %%B 格式的语法,但在他们使用的代码中,像 B%%
巴斯
% 前缀是一个约定。它对 M(UMPS) 解释器没有任何意义,但对程序员有任何意义。通常 % 变量意味着“临时”或临时变量,不应将其用于超过一两行代码的任何内容。例如
for %ln=1:1:maxNum do ImportantThing(%ln) ; loop over lines 1 through maxNum
在普通代码中,您会声明(新)一个变量并正确使用它,但在引入“插件”代码时这种事情很常见,例如某些 EHR 应用程序的“预约患者预约后”编程挂钩。
允许在变量名之前或结尾使用“%%”。我不知道在 MUMPS 变量名称中使用“%'s”的特殊意义,但它是一种常见的“约定”。在这里推测,但我确实注意到,当 MUMPS 变量名和“%”的一部分在 ascii 值和键盘位置中位于所有三个附近时,$、^、& 都具有特殊含义。
程序,全局变量
在标准 MUMPS 系统中,有一个 MGR UCI,系统和实用程序驻留在其中。如果一个程序名称以“%”开头,那么它也可以从其他 UCI 访问,实用程序的名称以“%”开头,例如“%STA”(作业状态)、“%GE”(全局编辑)等上。只有 MGR UCI 中的程序才能以“%”开头。
此外,可以从其他 UCI 访问驻留在 MGR UCI 中的以“%”开头的全局变量。
因此,使用“%”作为程序或全局的第一个字符是系统的一部分(或者可以说是语言)。
当地人
MUMPS 是一个非常古老的东西,原始语言没有局部变量支持(所有子程序和主程序共享一个公共命名空间)。无论如何,用户程序也可以调用其他程序,实用程序:DO FUNCT^%UTILPRG。按照惯例,实用程序使用以“%”开头的变量名,因此它们不会与用户程序的变量发生冲突。
因此,使用“%”作为局部变量的第一个字符只是一种约定,但它在实用程序中使用。