本帖最后由 i电子 于 2012-8-28 11:18 编辑
列表:列表与数组类似,是将任意数量的元素集合起来,但是它是元素的有序集合,最简单的列表就是包含由任意个空格、制表符、换行符分隔开得任意多个元素的字符串。如字符串:{ Altera Xilinx Lattice Cadence},这就是一个有4个元素的列表,下面介绍几个关于列表的命令: lindex:这个命令的作用是返回列表中的元素,至少需要两个参数:一个列表list和一个索引值index,如图1所示,其中索引值index从0开始,因此返回的是列表中的index+1个元素,第一条命令中返回第3个元素,而第二条命令返回第5个元素超出了列表范围,因此返回值为空。 图1 在列表中还可以嵌套,即列表中的元素可以是一个列表,称为子列表,如{{a b c} {d e} f},其中嵌入了两个子列表{a b c}和{d e}。 list、concat、lrepeat:这三个都是创建列表的命令,它们都接受任意多个参数,返回结果都是一个列表,不同之处在于把参数组成列表的方式。如图2所示,list命令对于每个参数作为列表中一个独立的元素;concat命令将所有参数中的所有元素串接成一个大的列表;lrepeat则是重复一个元素集合来创建列表。 图2 字典:在列表中想要取出一个元素,需要知道该元素在列表中的索引,如果不知道索引那该怎么办呢?TCL给出了一个解决方案,就是字典。字典是TCL8.5版本才引进的数据类型,它为列表中的每个元素指定了一个独有的名字。那有些人会问,它跟数组有什么区别呢,数组也有数组名啊!其实字典跟数组有一些根本性的不同,数组是变量的无序集合,而字典是元素值的有序集合,并且还支持嵌套。 字典是类似于有偶数个元素的列表的一种结构,其第1、3、5 …… 个元素表示元素名称,并且都不相同。如图3所示,其中AgateLogic、Altera和Xilinx为字典的三个值,而字典中的第1、3、5个元素Astro、Stratix和Virtex分别为三个值的名称,每一个名称都映射到其后面的那个值,通过dict get命令可以根据名称在字典中查找对应的值。 图3
|