是否可以获取TCL数组中元素的创建顺序/插入顺序?

是否可以获取TCL数组中元素的创建顺序/插入顺序?,tcl,associative-array,Tcl,Associative Array,Tcl数组非常适合查找表,但理论上它们存储为“无序集”。是否可以按元素添加到数组中的顺序对它们进行迭代,而不添加额外的代码来跟踪插入顺序?据我所知,如果不跟踪插入顺序,就无法从数组中恢复元素的添加顺序。获取所需行为的最佳方法是使用字典而不是数组。dict确实保留了插入的顺序,作为一种额外的奖励,当您将它们传入或传出procs时,它们更易于使用。这是Tcl文档有点缺乏的情况之一。我找不到任何方法可以做到这一点,但是如果“array”的文档说顺序依赖于实现或者其他什么的话,那就太好了。不管怎么说,你

Tcl数组非常适合查找表,但理论上它们存储为“无序集”。是否可以按元素添加到数组中的顺序对它们进行迭代,而不添加额外的代码来跟踪插入顺序?

据我所知,如果不跟踪插入顺序,就无法从数组中恢复元素的添加顺序。获取所需行为的最佳方法是使用字典而不是数组。dict确实保留了插入的顺序,作为一种额外的奖励,当您将它们传入或传出procs时,它们更易于使用。

这是Tcl文档有点缺乏的情况之一。我找不到任何方法可以做到这一点,但是如果“array”的文档说顺序依赖于实现或者其他什么的话,那就太好了。不管怎么说,你的答案与我对数组的经验相符。+1:数组使用的哈希表的实现根本无法维持顺序,而且细节非常复杂,“随机重新排序”是一个简单得多的解释。dict确实是替代品,它们专门维护插入顺序;这是有保证的。