有没有更好的方法来浏览clojure中的嵌套地图。例如。对于以下地图:
{
:one{
:two {
:three value
}
}
}
要获得:three
我(:three (:two (:one mymap)))
的值,但如果我可以执行某些操作(-> mymap :one :two :three)
答案 0 :(得分:6)
核心功能get-in完全符合您的要求
Returns the value in a nested associative structure,
where ks is a sequence of ke(ys. Returns nil if the key is not present,
or the not-found value if supplied.
(get-in your-nested-data [:one :two :three])
答案 1 :(得分:6)
"如果有类似线程的话我会做得更好(-> mymap :one :two :three)
"
谁说你不能?您的确切语法有效!
so.core=> (def mymap { :one, { :two, { :three :value } } })
#'so.core/mymap
so.core=> (-> mymap :one :two :three)
:value