Stata 和 Mata 中的注释:执行文件编辑器与命令提示符



我通常在另一个文本编辑器中工作,只需将我的工作复制并粘贴到Stata的命令提示符中即可。但是,我注意到命令提示符和do文件编辑器处理注释的方式有所不同。

下面的代码再现了我发现的东西:

mata
//test comment
/* test comment 2 */
end
//test comment 3
*test comment 4
/* test comment 5*/

do文件编辑器运行时,代码运行没有问题。

但是当我在复制并粘贴到命令提示符后运行它时,我在mata中收到许多r(3000)错误,在 Stata 中收到r(199)错误。

唯一的例外是常规 Stata 中的*注释在两个界面中都可以正常工作。

我还看到mata中的//注释与r(3000)通知一起给出"表达式无效"错误消息,但我仅在使用/* text */注释时才收到r(3000)消息。在常规 Stata 中,两种未*的注释类型都会给出"/不是有效的命令名称"消息以及r(199)

我的主要问题是:

  • 这种差异背后的原因是什么?我能做些什么来抑制这些错误?

另外,这对我来说就像一个危险信号:

  • 当我通过命令提示符而不是do文件编辑器运行时,是否有其他行为有所不同?

以下来自第 16 届 Stata 手册的关于 Do-files 的技术说明解释了:

".../* */、//和///注释指示器只能在 do 文件和 ado 文件中使用;您不得以交互方式使用它们。但是,您可以交互式地使用"*"注释指示器...">

所以这里没有什么奇怪的。您可以通过遵循约定轻松防止此类错误。只需阅读上述手册的相关部分即可了解更多详情。

只有StataCorp确定,但这种差异可能是由于Stata在从do文件或命令提示符解析代码时如何在内部解释代码而产生的。

有关不一致行为的另一个(不相关)示例,请参阅以下帖子:

  • Stata 轴标记在多条线上中断时偏离中心

就个人而言,在广泛使用 Stata 多年后,我在从do文件和交互式运行代码时没有注意到任何其他主要差异。

最新更新