Stata:检查本地宏是否未定义

Wil*_*uck 8 undefined stata stata-macros

我正在写一个Stata do文件,如果用户不提供某些参数,我想提供默认值.为此,我想检查宏是否未定义.

我想出了一个hacky方法来做到这一点:

*** For a local macro with the name value:
if `value'1 != 1 {
    ...do stuff
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有惯用的方法来做到这一点.

小智 8

如果未定义,宏的内容将为空.你可以这样做:

if missing("`mymacroname'") {
    display "Macro is undefined"
}
Run Code Online (Sandbox Code Playgroud)

如果宏将包含数字,则实际上不需要引号.该missing(x)函数可以处理字符串和数字.这有点像测试(x=="" | x==.)


Nic*_*Cox 5

这个问题要求采用惯用的方式来实现这一目标并跨越Stata程序员

 if "`macroname'" != "" 
Run Code Online (Sandbox Code Playgroud)

是否最常用的测试宏是否定义.宏在定义时包含字符串,这是一般用法; 使用数字字符只是一种特殊情况.

  • 尽管神秘的反对票,这仍然是相关和正确的。看到反对者的另一种观点,无论它是什么,都会很有趣。 (2认同)