只打印那些满足豁免文件中条件的变量

问题描述

我想在豁免文件(fh)中打印某些满足条件的vdd和ground并打印在豁免文件中。

*set matrix_waiver($pwr_name,$gnd_name) 1
if { [info exists matrix_waiver] } {
      foreach power $pwr_name {
          if { [info exists matrix_waiver($power) ] } {
              lappend matrix_waiver $fh_waiver
          }
      }
      foreach ground $gnd_name {
          if { [info exists matrix_waiver($ground) ] } {
              lappend matrix_waiver $fh_waiver
          }
      }
  }*

我没有得到想要的输出..上面代码中的错误是什么?

解决方法

您的问题是您将变量 (matrix_waiver) 用作简单变量和关联数组。那是行不通的(好吧,除非变量介于 unset 之间,否则我认为您不想这样做)。这两者在 Tcl 中根本不同(它们是两种主要的变量类型;第三种是链接,用于实现 globalupvar,您通常可以忽略它)。

如果实际数据(您没有向我们展示)是一个简单的变量,其中仍然可能包含复杂的结构,例如列表和字典,那么您将不得不使用 lindexlsetlappend 等等。

如果实际数据是关联数组,则需要在执行 lappend 等操作时提供正确的元素名称。