鉴于多方法如下 -如何从多方法中提取共享逻辑?
(defmulti group-data :group-by)
(defmethod group-data :day
[kv]
(->> kv :data (group-by
(fn [kv]
(let [date (:time kv)]
(str
(month date) "-" (day date) "-" (year date)))))))
(defmethod group-data :month
[kv]
(->> kv :data (group-by
(fn [kv]
(let [date (:time kv)]
(str
(month date) "-" (year date)))))))
(defmethod group-data :year
[kv]
(->> kv :data (group-by
(fn [kv]
(let [date (:time kv)]
(year date))))))
在所有三个多方法,唯一的区别是字符串函数。我如何创建一个更高阶的函数,在那里它只需要不同的s表达式来创建字符串?
还有什么更好的想法,以减少重复的代码?
感谢@amalloy,这是一个整洁的解决方案。 – murtaza52 2013-03-04 14:17:30