我正在編寫一個clojure函數來將各種數據類型格式化爲一個字符串。取決於數據類型的格式輸出字符串
我天真的解決方案:我沒有用過
(defn p [d]
(cond
(vector? d) (str "vector: " d)
(list? d) (str "list: " d)))
#'user/p
user> (p [1 2 3])
"vector: [1 2 3]"
user> (p '(1 2 3))
"list: (1 2 3)"
多方法之前。我這是一個很好的使用,或者是否有另一種方法來避免臭味使用cond?
感謝您展示如何做到這一點。我喜歡這裏的multimethods的簡單性。我可能只需要根據它是seq或字符串還是其他任何地方來改變格式,所以我可能會避免對接口進行硬編碼。 – devth 2012-01-31 00:08:56