【发布时间】:2019-10-02 14:38:01
【问题描述】:
我已经声明了一个数组,我可以通过循环访问其中的所有元素,但是当我尝试直接访问某些元素时,它们不存在。
我尝试通过 CUI 访问数组,编写脚本来执行此操作,既可以直接在循环中,也可以通过将键设为变量;这种行为很奇怪。
我事先声明了我的数组 tileDirectory,当我进入 CUI 时
foreach {a b} [数组获取 tileDirectory] {puts $a}
…
xu/iq/grf/reg23DataReg/[0]
su/pipe/dcacheTag/dcPLRUEntry[31].dcPLRUEntryXReg/[0]
xu/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])”:数组中没有这样的元素
除了我可以读取数组的元素之外,我会注意其他元素我可以很好地读取,并且为了模式,它往往是带有“。”的名称。在那些给我带来麻烦的地方
【问题讨论】:
-
这很奇怪。我原以为错误是:无效的命令名称“31”
-
如果你这样做了怎么办:
set key {su/pipe/dcacheTag/dcPLRUEntry[31].dcPLRUEntryXReg/[0]}; puts $tileDirectory($key)? -
@glenn jackman:这仍然给了我“数组中没有这样的元素”,非常奇怪
-
当你只是
puts [list [array get tileDirectory]]时会发生什么——你看到任何多余的空格吗? -
@glennjackman 工作正常,一切都打印出来,即使是给我错误的条目,如果在我的原始循环中我放入 $tileDirectory($a) 而不是放入 $a,即使这样有效,即使它调用相同的数组键