如何在tcl proc中传递多个数组?

时间:2017-08-23 07:31:06

标签: arrays tcl procedure

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,我可以执行以下任务 但需要为同一个

创建一个proc
foreach 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

1 个答案:

答案 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