如何解决从本地宏列表findname创建一个变量列表
我想在命令中使用本地宏中的变量列表,例如:
local a int1 int2 num1 num2 bin1 bin2 ...
local b int3 int4 bin3 num3 ...
这里的变量 num*
int*
和 bin*
分别是数字、整数和二进制。
我想对局部 foreach
b' 中的变量运行 a' and
循环,但仅限于整数值的变量,即 int1,int2,int3
,...>
为此,我使用 Nick Cox 创建的 findname
命令来查找整数值的变量,将相应变量名称的列表保存在本地宏中。但我不想为数据集中的所有变量运行它,而只想为变量的子集(在局部变量 a
、b
等中指定)运行它,然后在后续命令中使用该列表.
因此,对于本地 a' and
b' 是本地 a_int' and
b_int' 中的整数变量列表,我想使用如下:
foreach var of varlist `a_int' `b_int'{
whatever command
}
解决方法
如果我理解正确,您需要存储在本地宏中的两个列表的交集。为此,您可以使用宏扩展函数来操作列表:参见 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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。