鑑於多方法如下 -如何從多方法中提取共享邏輯?
(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