如何将CLI参数向量分成Clojure成对



我有例如-m 4 -y 2016并希望最终获得[["-m" 4] ["-y" 2016]]或一个地图。我如何将它们分成对?

将它们分成对,使用分区:

dev=> (partition 2 ["-m" 4 "-y" 2016])
(("-m" 4) ("-y" 2016))

要制作地图,请对其应用哈希映射:

dev=> (apply hash-map ["-m" 4 "-y" 2016])
{"-y" 2016, "-m" 4}

有一个特殊的库。

(let [cli-options [["-m" "--max MAX" "M description"
                        :parse-fn #(Integer/parseInt %)]
                       ["-y" "--year YEAR" "Year"
                        :parse-fn #(Integer/parseInt %)]]]
        (-> "-m 4 -y 2016"
            (str/split #"s")
            (parse-opts cli-options)))
=>
{:options {:max 4, :year 2016},
 :arguments [],
 :summary "  -m, --max MAX    M descriptionn-y, --year YEAR  Year",
 :errors nil}

最新更新