Много раз я пытался определить макрос только для того, чтобы убедиться, что он не был создан.
Мой первый вопрос: есть ли лучший способ отслеживать эти сбои, чем вручную набирать
macro list
после каждой попытки сомнительного определенияlocal mylocal ...
?Во-вторых, почему определение локального объекта всегда терпит неудачу? Есть ли способ включить предупреждения для этого события?
В-третьих, приведенный ниже код иллюстрирует, где это поведение меня расстроило в последнее время: захват позиции слова в строковом векторе; уменьшение позиции на единицу; и захват слова в соответствующей (непосредственно предшествующей) позиции. Любые указатели будут приветствоваться.
.
local cuts 0 15 32 50
local mycut 32
local myposn : list posof "`mycut'" in cuts
// two methods that fail loudly:
local mynewcut : word ``myposn'-1' of cuts
local mynewcut : word `myposn'-1 of cuts
// five methods that fail silently, creating nothing:
local mynewcut : word `=`myposn'-1' of cuts // 1
scalar tmp = `myposn'
local mynewcut : word `=tmp-1' of cuts // 2
scalar tmp2 = tmp -1 // 3
local mynewcut : word `=tmp2' of cuts
local mynewposn = `=`myposn'-1'
local mynewcut : word `mynewposn' of cuts // 4
local mynewcut : word `=`mynewposn'' of cuts // 5
// also fails silently (and is not what I'm looking for):
local mysamecut : word `myposn' of cuts