如何使用统一命名空间的键获取地图的命名空间?

时间:2019-07-18 15:27:30

标签: clojure namespaces maps

有没有一种方法可以获取具有统一名称分隔键的映射的名称空间?

例如:

pipeline{ agent { label 'Jenkins-slave' } stages { stage('Clone Ansible'){ steps { echo 'Cloning Ansible to ansible' git changelog: false, credentialsId: 'buildbot-pk', poll: false, url: 'git@github.com:myrepo/ansible.git' } } stage('Run Ansible'){ steps { ansiblePlaybook colorized: true, credentialsId: 'root-production', disableHostKeyChecking: true, inventory: 'myinventory', playbook: 'myplaybook.yml', tags: 'mytag' } } } }

2 个答案:

答案 0 :(得分:1)

如果映射不为空并且其所有键都具有相同的名称空间,则满足以下条件:

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

答案 1 :(得分:1)

(->> m keys (map namespace) set)

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