enter code here
我想将多个数组传递给tcl proc以执行特定任务。
说我有阵列名列表
set array_names [list abc pqr xyz]
每个数组都包含
array set abc {
red true
blue false
green true
yellow false
}
array set pqr {
red false
blue true
green false
yellow true
}
xyz数组
没有proc,我可以执行以下任务 但需要为同一个
创建一个procforeach RS $array_names {
foreach {arr_ind ind_value} [array get $RS] {
puts "set $RS\_$arr_ind $ind_value"
}}
将输出
set abc_yellow false
set abc_blue false
set abc_green true
set abc_red true
set pqr_yellow true
set pqr_blue true
set pqr_green false
set pqr_red false
答案 0 :(得分:2)
您可以使用 proc test {array_names} {
foreach elem $array_names {
upvar $elem __array
foreach {arr_ind ind_value} [array get __array] {
puts "set $elem\_$arr_ind $ind_value"
}
}
}
命令来实现此目的。
test $array_names
将程序称为
{
"size": 0,
"aggregations": {
"filterAAA": {
"filter": {
"term": {
"FIELD1": "AAA"
}
},
"aggregations": {
"f1": {
"terms": {
"field": "FIELD1",
"min_doc_count": 2
},
"aggregations": {
"f2": {
"terms": {
"field": "FIELD2"
}
}
}
}
}
}
}
}
参考: upvar