1、数组的定义与格式
数组索引通过()来指定,每个数组元素变量名的格式是“数组名(索引值)”,数组元素采用set命令来定义和赋值。
语法:set arrName(index) value 或者 array set arrName {index1 value1 index2 value2....}
array set arr1 "" #定义一个空数组
set array01(5) "hello world" #定义数组 05为索引值
puts $array01(5)
set array01(hello) world #数组索引值为包括数字字符在内的所有合法字符构成的字符串。
array names array01 #显示数组元素名
array set arr2 {1 a 2 b 3 c 4 d} #注意要成对出现
2、数组变量
可以使用和普通变量一样使用数组变量元素。如incr、lappend。但是注意不能将已定义为数组变量当成普通变量赋值,反之也不行。
set arr(1) 10
incr arr(1)
puts $arr(1)
set name arr
set ${name}(1) abc
puts $arr
可以使用替换获得数组名
3、多维数组
TCL中没有多维数组,但是可以自己定义。
set arr (0,0) 100
set arr (0,1) 200
parray arr
4、数组操作命令
4.1、array get命令:提取数组索引、元素值并将这些值对组织成一个列表。
注意:array set命令将一个列表(数据要成对)转换成一个数组。
4.2、array name 命令:
返回所有元素索引名与模式pattern匹配的元素索引名列表
4.3、遍历数组
可以用来对未知数组的每个元素进行操作。
array set a1 [list a AAA b BBB c CCC d DDD] #将链表转换成数组
set l1 [array names a1] #遍历输出
foreach id $l1 {
puts "a1($id)= $a1($id)"
}
注意:array names返回元素索引的时候,最后一个元素的索引被放在了第一个位置。
4.4、用数组定义结构
Tcl语言中没有结构类型,可以通过数组定义来实现相似的功能。