是否允许使用tcl switch语句使用数组元素?我有一个名为
的数组set name "pad"
set p_list("pad") "IO2"
现在尝试在数组上做一些基于条件的东西,比如
% switch $p_list($net_name) {
IO1 {
puts "io1"
}
IO2 {
puts "io2"
}
default {
puts "default"
}
}
,但似乎数组不能传递给交换机,因此,出错与以下错误无法读取"pads_list(pad)":数组中没有这样的元素
谁能建议一下这是否允许?如果允许,我该怎么做呢?
在Tcl中,当双引号不在单词的开头或结尾时,双引号不是特殊的。Tcl不是Python或c。这意味着您创建了一个名称为"pad"
的数组元素,包括双引号。这是合法的,但在您正在编写的应用程序中是非常不寻常的。(你写的switch
看起来绝对没问题。)你可以这样写:
set p_list(pad) "IO2"
或:
set net_name ""pad""
我猜前者是你想要的。
也可能:
set p_list($net_name) "IO2"
你也可以改变变量名。
还有一些其他的选择:
set "p_list(pad)" "IO2"
set net_name {"pad"}
我不认为这些可能会让你快乐,但他们会做正确的事。