数组和键控列表有什么区别?

use*_*694 2 tcl

谁能解释数组和键列表之间的区别?在我看来,两者都在做同样的事情。

谁能区分这些?最好使用哪个?

Don*_*ows 5

两者都是概念上的关联图。

Tcl数组是复合变量,是简单变量的集合。每个变量可以包含任何值(不,变量不是值),并且数组由任意值索引。有没有自定义键的顺序。与任何变量一样,您可以在数组或数组的任何元素上设置跟踪。您也可以vwait在它们上。

TclX键控列表是一个包含其他值的值,并且按值建立索引(由于.用作结构化索引分隔符,因此存在一些限制)。我认为关键顺序是“插入顺序”,但我不是100%。键控列表元素没有特定的标识。

您可以将键控列表放入数组元素中,但根本不能将数组放入键控列表中。

最好使用哪个?这实际上取决于您在做什么。数组内置于Tcl本身;你总是有他们。键控列表取决于存在的TclX软件包。


从8.5开始,Tcl还内置了字典值。由于某些不幸的原因,他们在键控列表中使用了不同的语法。但是,它们还有更多的支持命令,并且它们支持字节码编译,从而使字典比键列表更快。但是,您仍然拥有数组,因为数组不是值,而字典不是变量。