比较两个不同的本地宏的元素

Par*_*rma 2 stata stata-macros

我有一个名为的本地宏peer_list,它包含280个不同的元素,所有元素都是字符串.我还有另一个本地宏调用used_list,它包含本地包含的元素的子集peer_list.

对于peer_list我想要测试该元素是否在本地的每个元素used_list.如果元素存在于used_list我想丢弃它,否则我想执行另一组条件.

我试图使用以下代码,但它没有工作:

foreach peer in local peer_list {
    if `:list peer in local used_list' {
        * commands I wish to execute
    }
    else {
        * commands I wish to execute
    }
}
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何关于实现这一目标的替代方法的建议.

Nic*_*Cox 5

你没有说你的代码在什么意义上"没有用",你没有提供可重现的例子.然而,你似乎正在沿着正确的方向努力.

 local beasts frog toad newt unicorn griffin 
 local real frog toad newt 

 foreach b of local beasts { 
     if `: list b in real' { 
         di "`b' is real" 
     } 
    else di "`b' is fabulous" 
 } 

 frog is real
 toad is real
 newt is real
 unicorn is fabulous
 griffin is fabulous
Run Code Online (Sandbox Code Playgroud)

类似代码的常见错误是在不同的语言环境中定义和使用本地宏,以便它们无法相互看到.

一个更明显的错误是你需要关键字ofnot in.你拥有的是合法的,但不是你想要的.相比

foreach b in local beasts {
    di "`b'"
}

local
beasts
Run Code Online (Sandbox Code Playgroud)