tcl数组中的某些元素不可访问(即“数组中无此元素”)

问题描述 投票:0回答:1

我已经声明了一个数组,可以通过循环访问其中的所有元素,但是当我尝试直接访问某些元素时,它们不存在。

我已经尝试通过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])”:数组中没有这样的元素

我会读取数组的元素,但请注意,我可以读出其他元素也很好,并且出于模式考虑,它往往是带有“。”的名称。在给我带来麻烦的人中

arrays tcl global access
1个回答
0
投票

显然,您在多个位置(或在不同的名称空间)定义了数组,例如下面的示例程序。为了使以下程序正常工作,必须取消对global td语句的注释。

proc myproc { } {
  # global td
  set td(abc) 123

  puts $td(def)
}

set td(def) 456
puts $td(def)
myproc
© www.soinside.com 2019 - 2024. All rights reserved.