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

时间:2018-05-16 15:21:06

标签: comments stata

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

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

mata
//test comment
/* test comment 2 */
end

//test comment 3
*test comment 4
/* test comment 5*/

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

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

唯一的例外是常规Stata中的*注释在两个接口中都能正常工作。

我还看到//中的mata评论表示"表达无效"错误消息以及r(3000)通知,但在使用r(3000)评论时,我只收到/* text */消息。在常规Stata中,两个不是*的注释类型都不是有效的命令名称"消息以及r(199)

我的主要问题是:

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

此外,这对我来说就像一个红旗:

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

1 个答案:

答案 0 :(得分:4)

16th Stata manual about Do-files中的以下技术说明解释了:

  

" ... / * * /,//和///注释指示符只能用于do-files和ado-files;你可能不会以交互方式使用它们。但是,您可以交互使用“*”注释指示符 ..."

所以这里没什么好奇怪的。您可以通过遵循约定轻松地防止这些错误。请阅读上述手册的the relevant section了解更多详情。

只有StataCorp肯定知道,但这种差异可能源于Stata在从do文件或命令提示符解析代码时内部解释代码的方式。

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

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