通常,當我在庫中看到clojure協議時,協議方法將被包裝在一個函數中,通常很少添加功能。例如:爲什麼clojure協議方法經常被函數包裝?
(defprotocol Pfoo
(foo-method [this]))
(deftype Atype [x y]
Pfoo
(foo-method [this] (do-something)))
(defn foo [arg] (foo-method arg))
而且客戶端通常需要調用函數foo,而不是協議中的foo-method。 (請參閱clojurescript core頂部的協議以瞭解此類事物的具體示例。
那麼爲什麼協議經常被掩蓋在函數後面?難道協議方法不能成爲面向客戶端的部分,而不是包裝函數?
另請參閱http://www.gotw.ca/publications/mill18.htm – Chouser 2013-05-13 13:27:55