2009-06-15 12 views
1

私は[配列名X]によって返される名前は未定義の順序であることを知っていますが、それらは常ににありますか?未定義の注文ですか?Tcl配列名に対する予測可能な順序?

非常に大きな配列を調べていますが、クラッシュした場合にファイルに進捗状況を記録したいので、もう一度やり直すことができます。

PS。簡単な実験では、常に同じ 'ランダム'の順序であることを示していますが、これが正しいとは限りません!

答えて

5

短い答えは、あなたが順序に頼ることができず、あなたの最善の策は[配列名X]を使ってその順序を使う​​ことです。

長い答えは、キーが同じ(そして同じTclバージョン)であれば、注文は安定しているはずですが、私は依然としてそれに頼らないでしょう。

Tcl 8.5以降を使用している場合は、配列の代わりにDictを使用することをお勧めします。 Dictの要素の順序は、追加された順序です。

+0

Agh - 8.4! ありがとうございます。 – Cormac

+0

良いことに、dictは8.4の標準的な部分ではありませんが、パッケージとしてロードすることができます。 http://wiki.tcl.tk/5042を参照してください。 – Jackson

+0

lsort用の独自のprocを作成することもできますので、純粋にアルファベット順とは異なる順序を強制することができます。 –

関連する問題