2011-12-01 26 views
4

Tclアレイはルックアップテーブルには最適ですが、理論的には「順序付けられていないセット」として保存されています。配列の要素が配列に追加されたときに挿入順序を自分で追跡するためのコードを追加することなく、それらを繰り返し処理することはできますか?TCL配列の要素の作成順序/挿入順序を取得できますか?

答えて

7

私が知っている限り、配列から要素を順番に取得する方法はありませんが、挿入順序を自分で追跡しなくても追加できます。必要な動作を得るには、配列ではなく辞書を使用するようにしてください。 dictは挿入の順番を保持していますし、補充されたボーナスとして、procに出入りするときに作業するのがはるかに良いです。

+0

これは、Tclのドキュメントが多少欠けているケースの1つです。私はあなたがこれを行うことができる方法を見つけることができませんが、 '配列'のためのドキュメントが注文が実装依存か何かであると言われればいいでしょう。とにかく、あなたの答えは私のアレイの経験と一致します。 –

+3

+1:配列で使用されるハッシュテーブルの実装では、順序はまったく維持されず、詳細は十分に複雑で、「ランダムに並び替える」ははるかに簡単な説明です。 Dictsは実際に置換えであり、特に挿入順序を維持しています。それは保証されています。 –

関連する問題