(seq {:a 1 :b 2 :c 3})
;([:a 1] [:b 2] [:c 3])
マップを呼び出すseq
と、キーと値のペアのシーケンスが得られます。通常、seq
呼び出しは暗黙的です。
ペア
- 入力した順序である必要はありません。
- は実際には
MapEntry
s であり、ペアとして動作します。
したがって
(type (first {:a 1 :b 2 :c 3}))
;clojure.lang.MapEntry
あなたの疑似コード
(mapcat (fn [[:key key-a][:value value-a]] (println "key: " key-a "\n value: " value-a )))
...いくつかの修理が必要です:
- 省略された最後の引数
map
(適用されるコレクション) を指定します。
MapEntry
それぞれをペアとして単純に分解して、
キーと値を取得します。
- 関数を各ペアに適用する
map
代わりに使用します。mapcat
まったく機能するのは幸運ですmapcat
。
dorun
シーケンスを強制的に評価し、その際に破棄するために使用します。REPL は前者を実行しますが、実行中のアプリケーションは必要ありません。
これにより、
(dorun
(map
(fn [[key-a value-a]] (println "key: " key-a " value: " value-a ))
{:a 1 :b 2 :c 3}))
どのプリント
key: :a value: 1
key: :c value: 3
key: :b value: 2
...そして戻ります nil
。