我通常在另一个文本编辑器中工作,只需将我的工作复制并粘贴到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
文件编辑器运行时,是否有其他行为不同?答案 0 :(得分:4)
16th Stata manual about Do-files中的以下技术说明解释了:
" ... / * * /,//和///注释指示符只能用于do-files和ado-files;你可能不会以交互方式使用它们。但是,您可以交互使用“*”注释指示符 ..."
所以这里没什么好奇怪的。您可以通过遵循约定轻松地防止这些错误。请阅读上述手册的the relevant section了解更多详情。
只有StataCorp肯定知道,但这种差异可能源于Stata在从do
文件或命令提示符解析代码时内部解释代码的方式。
请参阅以下帖子,了解不一致行为的另一个(无关)示例:
就个人而言,多年来广泛使用Stata之后,我还没有注意到从do
文件以交互方式运行代码时的任何其他主要差异。