问题描述
我想在豁免文件(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 中根本不同(它们是两种主要的变量类型;第三种是链接,用于实现 global
和 upvar
,您通常可以忽略它)。
如果实际数据(您没有向我们展示)是一个简单的变量,其中仍然可能包含复杂的结构,例如列表和字典,那么您将不得不使用 lindex
和lset
和 lappend
等等。
如果实际数据是关联数组,则需要在执行 lappend
等操作时提供正确的元素名称。