Tcl中列表定义的方法有如下三种:
set colorlist1 {red green blue}
red green blue
set colorlist2 [red1 green1 blue1]
invalid command name "red1"
set colorlist2 [list red1 green1 blue1]
red1 green1 blue1
set colorlist3 [split "red2_gree2_blue2" _]
red2 gree2 blue2
set colorlist4 [split red3_green3_blue3 _]
red3 green3 blue3
set colorlist5 [split "red4_gree4_blue4" "_"]
red4 gree4 blue4
Tcl中列表的命令一般都是对列表的内容取出来再处理,不会对原列表有什么影响,如下面代码:
lreplace colorlist5 1 1 g4
list doesn't contain element 1
lreplace $colorlist5 1 1 g4
red4 g4 blue4
$colorlist5
invalid command name "red4 gree4 blue4"
puts $colorlist5
red4 gree4 blue4
但是有一个lappend命令却是直接处理列表本身:
lappend colorlist5 black
red4 gree4 blue4 black
puts $colorlist5
red4 gree4 blue4 black
当然lappend命令中不象其它命令那样用“ $colorlist5",而是要用"colorlist5"这样的形式。
对于一个列表,循环索引如下操作:
Vivado% set lt {a b c}
a b c
Vivado% for {set i 0} { $i<[llength $lt]} {incr i} {
puts [lindex $lt $i]
}
a
b
c
更简单的列表循环索引操作如下:
Vivado% foreach c $lt {
puts $c
}
a
b
c