【问题标题】:When are global macros deleted?什么时候删除全局宏?
【发布时间】:2014-10-28 18:52:45
【问题描述】:

我有一个do 文件,我想从中选择几行代码,然后使用Execute (do) 按钮运行它们。问题是在这个do 文件中定义了一堆本地宏。我可以运行它们,但是在 Stata 命令提示符下,无法访问本地宏。因此,我认为我应该只使用全局宏。

我已经查看了几个地方,但无法找出宏变量实际具有的范围。我意识到本地宏仅在它们最初创建的实例(例如,do 文件)中定义。

但是对于全局宏,它们是否会永久存储,并且每次我打开一个新的 Stata 实例时,我仍然会保留以前会话中的全局宏?

还是每次我退出 Stata(或其他)时它们都会被删除?

【问题讨论】:

    标签: variables global stata local stata-macros


    【解决方案1】:

    全局意味着随处可见,但并非始终可见。

    您创建的全局宏会在会话结束时消失。

    当您启动会话时,或者实际上在任何时候,macro list 会显示在您当前语言环境中可见的全局和本地宏。这里“locale”不是Stata文档中使用的词,而是一个nonce造词,表示当前交互会话、当前程序、do-file编辑器的当前内容或其选择,即当前运行的代码。不同之处在于本地宏仅在定义它们的语言环境中可见。全局宏在任何语言环境中都可见。

    一些全局宏似乎是动态创建的;因此,如果我希望显示当前日期或时间,我可以

     di "$S_DATE"
     di "$S_TIME"
    

    Stata 将访问操作系统以获取此类详细信息。

    但回答您的问题的最简单方法是进行实验。定义一些全局比如

     global whoami "bill999"
     di "$whoami" 
    

    然后注销并开始一个新会话,看看它是否被 Stata 保存。或者,save 当前数据集和use 新会话中的同一数据集,并查看全局变量是否在整个过程中幸存下来。

    另见help notes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多