【发布时间】:2019-07-18 15:27:30
【问题描述】:
有没有办法获得具有统一名称间隔键的映射的命名空间?
例如:
(map-ns {:some/key :val :some/other :val ,,,}) => “some”)
【问题讨论】:
标签: clojure namespaces maps
有没有办法获得具有统一名称间隔键的映射的命名空间?
例如:
(map-ns {:some/key :val :some/other :val ,,,}) => “some”)
【问题讨论】:
标签: clojure namespaces maps
(->> m keys (map namespace) set)
上面将为您提供所有命名空间的集合,或者如果 size > 1,您可以返回 nil。
【讨论】:
如果映射不为空且其所有键都具有相同的命名空间,则以下内容就足够了:
(def map-ns (comp namespace first keys))
或者:
(def map-ns (comp namespace ffirst))
这是一个在映射为空或具有不同命名空间的键时返回 nil 的版本:
(def map-ns
(comp
#(if-not (next %) (first %))
distinct
(partial map namespace)
keys))
或者:
(def map-ns
(comp
#(if-not (next %) (first %))
distinct
(partial map (comp namespace key))))
【讨论】: