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