19

(= m (zipmap (keys m) (vals m))) Clojure 1.3+に依存しても大丈夫 ですか?

この動作を行うと、状況によってはコードが少し読みやすくなります。

(defn replace-keys [smap m]
  (zipmap (replace smap (keys m)) (vals m)))

対。

(defn replace-keys [smap m]
  (into {} (for [[k v] m] [(smap k k) v]))
4

2 に答える 2

20

はい、それが変更された場合、多くのclojureが壊れます。

マップはツリーとして保存され、両方の関数が同じツリーを同じ順序で歩きます。

于 2012-05-27T08:19:44.260 に答える
15

これに対する答えがイエスであることを(公式に)確認できます。keysClojure 1.6 でとのドキュメント文字列valsが更新され、これについて言及されました ( http://dev.clojure.org/jira/browse/CLJ-1302を参照)。

于 2015-12-07T14:57:49.540 に答える