数组是Tcl数据结构之一,Tcl数组的索引可以是任意字符串,数组不支持嵌套。数组的索引对空格敏感,使用时需要注意。
创建
set arrayName(index) value
array set arrayName {?index1 value1 index2 value2 ... indexN valueN?}
第一种方式是set命令,直接向想要创建的数组赋值。index如果包含空格,只是将其用双引号包围是不行的,需要对空格进行反斜杠转义。由于数组支持变量替换,所以还可以通过变量来将带空格的字符串作为索引。
第二种方式是array set命令,与第一种不同的是,可以通过接受一个列表来同时传入多个元素对。
set idx "a b"
set arr($idx) 1
set arr(0) 2
set arr(c\ d) 3
输出
通过parray命令可以输出数据元素。
parray arr
多维数组
Tcl本身是不支持多维数组的,但是可以利用Tcl数组索引可以是多值的特性来达到相同的效果。
set arr(0,1) a
set arr(0,2) b
set arr(1,3) c
puts arr(0,1)
arr实际上仍是一维数组,只是通过逗号分隔的多值索引来达到逻辑上的多维数组的效果。