Получение строкового значения из вектора векторов - PullRequest
0 голосов
/ 04 апреля 2020

С учетом этой структуры данных

(def file-types 
 [["figure" "Figure"]
  ["video" "Video"]
  ["graphic" "Inline Graphic/Custom Artwork"]
  ["other" "Other"]])

С учетом этого "ключа"

(def file-type "graphic")

Это лучший способ получить второе значение из соответствующего кортежа?

(defn get-file-label [file-types file-type]
  (second (peek (filterv #(= (% 0) file-type) file-types))))

Ожидаемый результат "Inline Graphic/Custom Artwork"

1 Ответ

3 голосов
/ 04 апреля 2020

Легко, peasy! Просто преобразуйте последовательность пар строк в карту для быстрого поиска:

(ns tst.demo.core
  (:use tupelo.core tupelo.test))

(dotest
  (let [file-types [["figure" "Figure"]
                    ["video" "Video"]
                    ["graphic" "Inline Graphic/Custom Artwork"]
                    ["other" "Other"]]
        file->type (into {} file-types)]
    (is= (file->type "graphic") "Inline Graphic/Custom Artwork")))

Обязательно просмотрите Clojure CheatSheet и этот список других документов.

...