在clojure中记录方法的最佳实践

时间:2013-12-04 07:42:38

标签: clojure

我有一个记录:

(defrecord Foo [a b])

及其实例方法

(defn inc-a-field [this] (into this {:a (inc (:a this))}))

最佳做法是为此定义协议吗? (因为它是特定的Foo)

1 个答案:

答案 0 :(得分:3)

是的,如果要将协议附加到记录类型,最好先使用所有需要的方法定义协议。另一种方法是使用普通函数而不附加记录。

协议对于有状态操作非常方便。例如,请查看carmine connection record implementation

但如果您的记录只是具有预定义结构的地图,那么最好使用普通的clojure函数。

您还应该看this question,它与您的非常相似。