Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays tcl数组中的某些元素不可访问(即“数组中没有此类元素”)_Arrays_Tcl_Global - Fatal编程技术网

Arrays tcl数组中的某些元素不可访问(即“数组中没有此类元素”)

Arrays tcl数组中的某些元素不可访问(即“数组中没有此类元素”),arrays,tcl,global,Arrays,Tcl,Global,我声明了一个数组,我可以通过一个循环访问其中的所有元素,但当我试图直接访问某些元素时,它们并不存在 我曾尝试通过CUI访问数组,并编写脚本来实现这一点,包括直接在循环中访问,以及将键设置为变量;这种行为很奇怪 我在前面和输入CUI时声明了数组tileDirectory foreach{ab}[array get tileDirectory]{put$a} xu/iq/grf/reg23DataReg/[0] su/pipe/dcacheTag/dcPLRUEntry[31]。dcPLRUEnt

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

我曾尝试通过CUI访问数组,并编写脚本来实现这一点,包括直接在循环中访问,以及将键设置为变量;这种行为很奇怪

我在前面和输入CUI时声明了数组tileDirectory

foreach{ab}[array get tileDirectory]{put$a}

xu/iq/grf/reg23DataReg/[0]

su/pipe/dcacheTag/dcPLRUEntry[31]。dcPLRUEntryXReg/[0]

xu/cq/cq00/cqStatusReg/[0]

su/busReq/memIntfc/memReqStDataReg/[96]\u nocgc

但是,如果我这样做:

放入$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

真奇怪。我本以为错误是:无效的命令名“31”,如果您这样做:
set key{su/pipe/dcacheTag/dcPLRUEntry[31].dcPLRUEntryXReg/[0]};puts$tileDirectory($key)
?@glenn jackman:这仍然让我觉得“数组中没有这样的元素”,非常奇怪当你
puts[list[array get tileDirectory]]
时会发生什么——你看到任何额外的空格吗?@glennjackman工作正常,所有内容都会打印出来,甚至是给我错误的条目,如果在我最初的循环中,我将$tileDirectory($a)替换为puts$a,即使这样也行,即使它调用同一个数组keymy array是全局定义的,这也没有意义,那么为什么我的数组访问对其他所有东西都可以完美地工作,它似乎只是给我带来了包含句点(“.”)的键的麻烦在他们的变量中。