Как разбить вектор аргументов CLI на пары в Clojure? - PullRequest
1 голос
/ 02 июля 2019

У меня есть, например, -m 4 -y 2016, и я хочу получить [["-m" 4] ["-y" 2016]] или карту.Как мне разбить их на пары?

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Для этого есть специальная библиотека .

(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 description\n-y, --year YEAR  Year",
 :errors nil}
2 голосов
/ 02 июля 2019

Чтобы разбить их на пары, используйте partition :

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

Чтобы создать карту, примените хеш-карту к ней:

dev=> (apply hash-map ["-m" 4 "-y" 2016])
{"-y" 2016, "-m" 4}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...