【问题标题】:How to get the namespace of a map with uniformly namespaced keys?如何使用统一命名空间的键获取地图的命名空间?
【发布时间】:2019-07-18 15:27:30
【问题描述】:

有没有办法获得具有统一名称间隔键的映射的命名空间?

例如:

(map-ns {:some/key :val :some/other :val ,,,}) => “some”)

【问题讨论】:

    标签: clojure namespaces maps


    【解决方案1】:
    (->> m keys (map namespace) set)
    

    上面将为您提供所有命名空间的集合,或者如果 size > 1,您可以返回 nil。

    【讨论】:

      【解决方案2】:

      如果映射不为空且其所有键都具有相同的命名空间,则以下内容就足够了:

      (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))))
      

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        相关资源
        最近更新 更多