3
我创建了一个simpe协议和类型Clojure中:Clojure - Object上的默认协议实现失败?
(defprotocol Saving
(save [this] "saves to mongodb"))
;default implementation
(extend-type Object
Saving
(save [this] (encode this)))
(deftype NewsItem
[text date]
Saving)
然而,当我尝试:
=> (def news-item (->NewsItem "Super News!!!" "today"))
然后:
=> (save news-item)
我得到:
AbstractMethodError luminous_test.models.model.NewsItem.save()Ljava/lang/Object; luminous-test.models.model/eval2450 (NO_SOURCE_FILE:1)
什么是我做错了?我觉得像下面创建一个默认的协议实现的线,但是这就是我正在......
这样做的原因是,通过包括'Saving',你告诉Clojure'NewsItem'有它自己的'save'实现,但是它没有。 – 2013-02-23 03:13:37