Создание цикла с использованием локальных макросов завершается неудачно - PullRequest
0 голосов
/ 27 августа 2018

Я попытался создать цикл forvalues с использованием локальных макросов:

local open forval i=1/10 {
local close }
`open'
di `i'
`close'

Однако я получаю следующую ошибку:

forval command may not result from a macro expansion interactively or in do files
r(198);

Что я делаю не так?

1 Ответ

0 голосов
/ 27 августа 2018

Сообщение об ошибке довольно очевидно. Переводчик Статы просто отказывается работать с абстракциями на этом уровне.

То, что вы пытаетесь сделать, возможно только в некоторой степени:

local open i = 1 / 10 

forvalues `open' {
    display `i'
}

Другими словами, вы можете абстрагировать только диапазон цикла, но не сам цикл.

Это хороший пример ограничения расширения макросов, которое теоретически можно использовать везде.

...