據我所知,如果我想定義一個只能由一個defrecord
實現的協議(defprotocol
),我仍然必須先定義協議,然後定義實現它的defrecord
:將Clojure defprotocol和defrecord結合
(defprotocol AProtocol
(a-method [this])
(b-method [this that]))
(defrecord ARecord [a-field b-field]
AProtocol
(a-method [this] ...)
(b-method [this that] ...))
有沒有辦法將兩者結合起來,或許與「匿名」協議結合?
有你不想使用普通功能的原因是什麼? – Jonas
@Jonas:我可能要在協議重構的'後來defprotocol'讓別人記錄可以實現它,但是在目前的時間,我不知道。我想我可以隨時將普通函數改爲協議函數,作爲重構的一部分。我也不能在不實現協議的情況下「覆蓋」像'count'這樣的內置函數,否則我會影響默認綁定。 – Ralph
名爲'count'的協議函數也會影響內置。 – amalloy