0

我有我想在命令中使用的本地宏中的变量列表,例如:

    local a int1 int2 num1 num2 bin1 bin2 ...
    local b int3 int4 bin3 num3  ...

这里变量num* int*bin*分别是数字、整数和二进制。

我想对foreach本地 b' 中的变量进行循环a' and ,但仅限于整数值的变量,即int1, int2, int3, ...

为此,我使用findnameNick Cox 创建的命令来查找整数值变量,将相应变量名称的列表保存在本地宏中。但我不想对数据集中的所有变量运行它,而只想对变量子集(在 locals ab等中指定)运行它,然后在后续命令中使用该列表。

a' and 因此,对于本地b'中的整数变量列表作为本地a_int' and b_int',我想使用如下:

    foreach var of varlist `a_int' `b_int'{
        whatever command
    }
4

1 回答 1

1

如果我理解正确,您需要存储在本地宏中的两个列表的交集。为此,您可以使用宏扩展函数来操作列表:请参阅help macrolists.

// Setup
local a x1 x2 x3 x4 x5
local b x4 x5 x6 x7 x8
local int x2 x3 x6

// Get intersection of variable lists and integer list
local a_int : list a & int
local b_int : list b & int

// Put a_int and b_int together and drop possible duplicates
local ab_int `a_int' `b_int'
local ab_int_uniq : list uniq ab_int

// Do something
foreach var of varlist `ab_int_uniq' {
    * do something
}
于 2021-01-26T16:22:14.110 回答