我一直在与这个小的 Clojure 片段搏斗一段时间,但一直觉得有一种更惯用、更简单的方法。
期望的行为;转换“1”-> 真,“0”-> 假。否则按原样返回参数:
(= (mapper {:column 0} ["monkey" "stuff"]) "monkey")
(= (mapper {:column 0} ["1" "stuff"]) true)
(= (mapper {:column 0} ["0" "stuff"]) false)
这是我的第一次尝试;一种天真的命令式方法:
(defn mapper
[attr-map row]
(let [x (row (:column attr-map))
y ({"1" true "0" false} x)]
(if (nil? y)
x
y)))
第二次尝试:
(defn mapper
[attr-map row]
((comp #({"1" true "0" false} % %) row :column) attr-map))
谁能找到更好的解决方案?