我可以在Clojure中使用walk
走到下面地图的顶层:
(use 'clojure.walk)
(walk (fn [[k v]] (println (type k) k v)) identity {:a 1 :b {:c 3}})
结果:
clojure.lang.Keyword :b {:c 3}
clojure.lang.Keyword :a 1
{}
(这与map
)非常相似
但是当我使用postwalk
时 - 它会破坏尝试进行解构:
(postwalk (fn [[k v]] (println (type k) k v)) {:a 1 :b {:c 3}})
结果:
UnsupportedOperationException nth not supported on this type: Keyword clojure.lang.RT.nthFrom (RT.java:857)
答案 0 :(得分:1)
也许看看你在行走时发生的事情可以为你的问题提供一些启示。
user=> (postwalk println {:a 1 :b {:c 3}})
:a
1
[nil nil]
:b
:c
3
[nil nil]
{}
[nil nil]
{}
nil
user=>