(seq {:a 1 :b 2 :c 3})
;([:a 1] [:b 2] [:c 3])
マップを呼び出すseqと、キーと値のペアのシーケンスが得られます。通常、seq呼び出しは暗黙的です。
ペア
- 入力した順序である必要はありません。
- は実際には
MapEntrys であり、ペアとして動作します。
したがって
(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。