Tcl中如何迭代字符串并通过索引访问hw_targets元素?
Tcl列表元素的正确访问方式
你遇到的问题核心是混淆了Tcl中列表和数组的访问语法:
- 你的
hw_targets和正则分割后的theWords都是Tcl列表,不是数组,所以不能用变量名(索引)的数组语法访问,必须用列表专用命令。
直接访问原列表元素
用lindex命令可以按索引获取列表元素,索引从0开始:
# 获取第一个硬件目标 puts [lindex $hw_targets 0] # 输出:localhost:3121/xilinx_tcf/Digilent/210299B4BAF8 # 获取第二个硬件目标 puts [lindex $hw_targets 1] # 输出:localhost:3121/xilinx_tcf/Digilent/210299B146EB
正则分割后的列表访问
你用regexp -all -inline得到的theWords同样是列表,访问方式一致:
puts [lindex $theWords 0]
额外说明
其实get_hw_targets返回的内容本身就是合法的Tcl列表——Tcl会自动把换行、空格等空白字符当作列表元素的分隔符,所以你完全不需要用正则分割,直接对hw_targets用列表命令即可。如果要遍历所有元素,用foreach更方便:
foreach target $hw_targets { puts "当前硬件目标:$target" }
内容的提问来源于stack exchange,提问作者Ames ISU
相关产品推荐
相关产品推荐

