List 如何使用变量获取TCL列表索引元素?

List 如何使用变量获取TCL列表索引元素?,list,indexing,tcl,List,Indexing,Tcl,我有一个TCL列表 set d_nets { reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7} 我需要一定的操作并得到一个元素。 范例- for {set i 0} {$i < 128} {incr i} { set new_indx [expr { 7 - $i }] #expression can be more complicated lindex $d_nets $new_indx }

我有一个TCL列表

   set d_nets { reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7} 
我需要一定的操作并得到一个元素。 范例-

  for {set i 0} {$i < 128} {incr i} {
      set new_indx [expr { 7 - $i }]   #expression can be more complicated
      lindex $d_nets $new_indx 
  }
对于{set i 0}{$i<128}{incr i}{
set new_indx[expr{7-$i}]#表达式可能更复杂
林德克斯$d_网$new_indx
}
但是,这会标记一个错误

错误:错误索引“…”:必须是整数?[+-]整数?还是结束?[+-]整数


这里有关于lindex使用的帮助吗

我没有得到您得到的错误,但是请注意,您可以编写

lindex $d_nets 7-$i
而不是单独计算索引值

除了在引用
#
之前需要一个分号外,您的代码在这里工作正常


您可能也想丢失列表中的逗号。Tcl使用空格作为列表分隔符,因此逗号在值中结束。

嗨,添加注释时,我们需要添加分号。 添加分号后,它工作正常

%集合d_网{reg0,reg1,reg2,reg3,reg4,reg5,reg6,reg7}

reg0、reg1、reg2、reg3、reg4、reg5、reg6、reg7

%

%对于{set i 0}{$i<128}{incr i}{

  set new_indx [expr { 7 - $i }]; #expression can be more complicated

  lindex $d_nets $new_indx
}

%

另一个选择是,我们可以将这两行合并为一行,如下所示

对于{set i 0}{$i<128}{incr i}{

  set new_indx [expr { 7 - $i }]; #expression can be more complicated

  lindex $d_nets $new_indx
put[lindex$d_nets[expr{7-$i}]


}

不,这没用。可能与TCL版本有所不同。”lindex$d_nets 7-$i'给了我错误错误索引:“7-0”必须是integer@user2435030:由于
7-0
是另一条错误消息所请求的
integer?[+-]integer?
表单,因此出现错误是令人惊讶的。你们有什么版本?Tcl解释器是其他软件的一部分吗?是的,Tcl解释器是EDA工具的一部分。版本8.5我确信标准8.5接受
lindex$list 7-0
语法。可能您的工具重新定义了
lindex
命令。对不起,我帮不了你。tcl有没有其他类似林黛克斯的产品?像array reference??您使用的是什么版本的Tcl?
info patchlevel
命令的输出将是良好的。代码在8.6版中运行良好。。您只需删除“表达式可能更复杂”的注释,或者更改为“表达式可能更复杂”。是的,可能存在版本不匹配。使用“puts$TCL_version”检查TCL版本TCL解释器是EDA工具的一部分。版本8.5