Stata: проверить, не определен ли локальный макрос - PullRequest
8 голосов
/ 07 марта 2011

Я пишу файл Stata do, и я хотел бы предоставить значения по умолчанию, если пользователь не предоставляет некоторые параметры. Для этого я бы хотел проверить, не определен ли макрос.

Я нашел хакерский способ сделать это:

*** For a local macro with the name value:
if `value'1 != 1 {
    ...do stuff
}

Но я хотел бы знать, есть ли идиоматический способ сделать это.

Ответы [ 2 ]

8 голосов
/ 07 марта 2011

Если он не определен, содержимое макроса будет пустым.Вы можете сделать это:

if missing("`mymacroname'") {
    display "Macro is undefined"
}

Кавычки на самом деле не нужны, если макрос будет содержать число.Функция missing(x) может обрабатывать строки и числа.Это вроде как тестирование (x=="" | x==.)

5 голосов
/ 06 июля 2013

Вопрос, заданный для идиоматического способа сделать это и для программистов Stata

 if "`macroname'" != "" 

, является наиболее часто используемым тестом определения макроса.Макросы содержат строки, когда они определены, и это общее использование;использование числовых символов - это особый случай.

...