2017-12-25 8 views
0

sorted-mapタイプのkeysを呼び出す場合、結果としてseqはマップのキーと値のペアと同じ順序になると仮定します。ソートマップ上でキーを呼び出すと、結果のseqはソートされた順序であることが保証されますか?

しかし、Jarzkaという名前ClojureDocsからのユーザーは約2年前に、これは言っていた:

私はキーが常に同じ順序で返されていないことに気づきました。通常はそうですが、必ずしもそうではありません。

(残念ながら、私は直接コメントにリンクすることはできません。それはkeysを記述したページの下部にあります。)

なぜこれがあるかもしれませんか?私は(sort (keys m))だけで安全でしょうか?

(def m (sorted-map :a 1, :b 2, :c 3)) 

(def maybe-unsorted-keys? (keys m)) 
(def sorted-keys (sort (keys m))) 

答えて

1

ドキュメントfor keysfor vals

  • (seq map)と同じ順序でマップのキーのシーケンスを返します。 (配列マップ)マップがソートされているか否かそう

と同じ順序で、マップの値のシーケンスを返し

  • (keys m)(vals m)を呼び出した結果は、1対1対応するであろう。ソートマップはキーでソートされているので、 (keys srt-map)の結果がソートされます。

    関連する問題