通常,当我在库中看到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