我正在编写一个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