2

map私はClojureの関数を試してきましたが、次のようにコレクションに適用mapするベスト プラクティスは何かと考えていました。map

(map #(pprint (str %1 " " %2)) {:hello 1 :world 2})

出力 (順序は重要ではありません):

:hello 1
:world 2

私の最初のアイデアは次のとおりです。

(def my-map {:hello 1 :world 2})
(map #(pprint (str %1 " " %2)) (keys my-map) (vals my-map))

しかし!Clojure (または ClojureScript など) がkeysvalsシーケンスの順序が相互に保持されることを保証しているという証拠をドキュメントで見つけられませんでした。

別のアイデアは次のとおりです。

(map #(pprint (str (first %1) " " (rest %1))) my-map)

これは、プレーン%1%2.

これを行うためのより良い方法があると思います。ご存知でしたら教えていただけないでしょうか?前もって感謝します!

4

2 に答える 2

5

keysそしてvals同じ命令を出します。

または、マップのエントリ全体に関数をマップできます。

(map (fn [[k v]] ...) {:foo 1 :bar 2})

または使用reduce-kv

(reduce-kv (fn [_ k v] ...) nil {:foo 1 :bar 2})
于 2013-06-11T10:33:12.510 に答える