我已经声明了一个数组,可以通过循环访问其中的所有元素,但是当我尝试直接访问某些元素时,它们不存在。
我已经尝试通过CUI访问数组,编写脚本来做到这一点,既可以直接循环,也可以通过将键设置为变量来做到这一点;行为非常奇怪。
我事先从CUI中输入了数组tileDirectory,然后我输入了CUI
foreach {a b} [array get tileDirectory] {puts $ a}
...
旭/ IQ / GRF / reg23DataReg / [0]
SU /管/ dcacheTag / dcPLRUEntry [31] .dcPLRUEntryXReg / [0]
旭/ CQ / cq00 / cqStatusReg / [0]
SU / BUSREQ / memIntfc / memReqStDataReg / [96] _nocgc
但是,如果我这样做:
puts $ tileDirectory(su / pipe / dcacheTag / dcPLRUEntry [31] .dcPLRUEntryXReg / [0])
无法读取“ tileDirectory(su / pipe / dcacheTag / dcPLRUEntry [31] .dcPLRUEntryXReg / [0])”:数组中没有这样的元素
我会读取数组的元素,但请注意,我可以读出其他元素也很好,并且出于模式考虑,它往往是带有“。”的名称。在给我带来麻烦的人中
显然,您在多个位置(或在不同的名称空间)定义了数组,例如下面的示例程序。为了使以下程序正常工作,必须取消对global td
语句的注释。
proc myproc { } {
# global td
set td(abc) 123
puts $td(def)
}
set td(def) 456
puts $td(def)
myproc