Clojure:defprotocol,默认实现,不内联

时间:2012-05-24 06:37:50

标签: clojure

修改

这个问题毫无意义,因为我是个白痴,误读了Clojure的文档。

我拥有的:

我有这样的事情:

(defprotocol Foo "doc" [foo bar]
  (Foo-bark [foo])
  (Foo-meow [foo])
  (Foo-other [foo]
     ... long
     multi
     line
     inline
     implementation))

我更喜欢什么:

(defprotocol Foo "doc" [foo bar]
  (Foo-bark [foo])
  (Foo-mewo [foo])
  (Foo-other [foo]))

(define Foo-other [foo]
   .. long
   multi
    line
   implementation)

问题

以上可能吗?如果没有,我能找到的最接近的是什么?

1 个答案:

答案 0 :(得分:4)

defprotocol不能用于为其功能/方法提供实现。您需要使用deftype或reify或extend / extend-type(或者下拉到类来执行此操作。对于您的用例,您可以使用extend来引用先前定义的函数来实现协议。 / p>