【发布时间】:2021-08-31 22:41:55
【问题描述】:
我是 Clojure 的新手。
我有一个地图 s1 和一个向量 s2
(def s1 {:params [{:param :begin_date
:name "begin date"
:dtk :date
:param_operand :single}
{:param :begin_num
:name "begin num"
:dtk :numeric
:param_operand :single}
{:param :begin_num2
:name "begin num2"
:dtk :numeric
:biparam_operand :single}]})
(def s2 [:begin_date :begin_num])
我正在尝试从 s1 和 s2 中找到匹配项。 IE 遍历 s2 中的每个元素并从 s1 中找到匹配项。 如果匹配存在,请检查 :dtk 的类型,如果类型是 :date 则我们接受该映射。
这是我尝试过的代码,当我必须使用列表 s2 中的一个元素来查找匹配是否存在时 - :begin_date
(defn test->map
[s1 s2]
(let [test-vec (->> s1
:params
(filter (fn [typet] (= (:param typet) :begin_date)))
first
:dtk)]
(when (= test-vec :date)
"done")))
如何修改上述函数,使其能够遍历整个元素列表并找到匹配项。 TIA。
【问题讨论】:
-
请添加您尝试过的代码以及您想要的结果。还请阅读这些 Clojure 文档来源:github.com/io-tupelo/clj-template#documentation 另请参阅“如何提出一个好问题”:stackoverflow.com/help/how-to-ask
标签: clojure