【问题标题】:Is it possible to get the Creation order/Insertion order of elements in a TCL array?是否可以获得 TCL 数组中元素的创建顺序/插入顺序?
【发布时间】:2011-12-01 15:40:29
【问题描述】:

Tcl 数组非常适合查找表,但理论上它们存储为“无序集”。有没有办法在元素被添加到数组的顺序中迭代它们而不添加额外的代码来自己跟踪插入顺序?

【问题讨论】:

    标签: tcl associative-array


    【解决方案1】:

    据我所知,如果不自己跟踪插入顺序,就无法按照添加顺序从数组中获取元素。获得所需行为的最佳方法是转而使用 dictionary 而不是数组。 dict 确实保留了插入的顺序,并且作为额外的好处,当您将它们传入或传出 procs 时,它们可以更好地使用。

    【讨论】:

    • 这是缺少 Tcl 文档的情况之一。我找不到任何方法可以做到这一点,但如果'array'的文档说订单是依赖于实现的或其他东西,那就太好了。无论如何,您的回答符合我对数组的经验。
    • +1:数组使用的哈希表的实现根本不维护顺序,而且细节非常复杂,以至于“随机重新排序”是一个更简单的解释。字典确实是替代品,它们特别维护插入顺序;这是有保证的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多