3

我在分析代码时正在学习 Mumps 语言有一个疑问是

B%% 和 %%B 有什么区别。

但是参考文档我只看到 %%B 格式的语法,但在他们使用的代码中,像 B%%

巴斯

4

3 回答 3

4

% 前缀是一个约定。它对 M(UMPS) 解释器没有任何意义,但对程序员有任何意义。通常 % 变量意味着“临时”或临时变量,不应将其用于超过一两行代码的任何内容。例如

for %ln=1:1:maxNum do ImportantThing(%ln)  ; loop over lines 1 through maxNum

在普通代码中,您会声明(新)一个变量并正确使用它,但在引入“插件”代码时这种事情很常见,例如某些 EHR 应用程序的“预约患者预约后”编程挂钩。

于 2011-06-13T15:12:56.637 回答
3

允许在变量名之前或结尾使用“%%”。我不知道在 MUMPS 变量名称中使用“%'s”的特殊意义,但它是一种常见的“约定”。在这里推测,但我确实注意到,当 MUMPS 变量名和“%”的一部分在 ascii 值和键盘位置中位于所有三个附近时,$、^、& 都具有特殊含义。

于 2011-04-14T08:11:12.343 回答
1

程序,全局变量

在标准 MUMPS 系统中,有一个 MGR UCI,系统和实用程序驻留在其中。如果一个程序名称以“%”开头,那么它也可以从其他 UCI 访问,实用程序的名称以“%”开头,例如“%STA”(作业状态)、“%GE”(全局编辑)等上。只有 MGR UCI 中的程序才能以“%”开头。

此外,可以从其他 UCI 访问驻留在 MGR UCI 中的以“%”开头的全局变量。

因此,使用“%”作为程序或全局的第一个字符是系统的一部分(或者可以说是语言)。

当地人

MUMPS 是一个非常古老的东西,原始语言没有局部变量支持(所有子程序和主程序共享一个公共命名空间)。无论如何,用户程序也可以调用其他程序,实用程序:DO FUNCT^%UTILPRG。按照惯例,实用程序使用以“%”开头的变量名,因此它们不会与用户程序的变量发生冲突。

因此,使用“%”作为局部变量的第一个字符只是一种约定,但它在实用程序中使用。

于 2013-08-19T20:38:35.290 回答