我有一个嵌套地图的 edn。我为这个 Clojure 找到了一个很好的例子:一个在嵌套的 hashmap 中搜索 val 并返回包含 val 的键序列的函数
(def coll
{:a "aa"
:b {:d "dd"
:e {:f {:h "hh"
:i "ii"}
:g "hh"}}
:c "cc"})
有了这个答案
(defn find-in [coll x]
(some
(fn [[k v]]
(cond (= v x) [k]
(map? v) (if-let [r (find-in v x)]
(into [k] r))))
coll))
我的问题是,因为some
我无法为每个结果找到路径,只有第一个逻辑真理。我试过map
了,keep
但他们打破了递归。我怎样才能让这段代码返回所有结果的路径,而不仅仅是第一个?任何帮助表示赞赏。