2

编辑

这个问题没有任何意义,因为我是个白痴并且误读了 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)

问题

以上可能吗?如果不是,我能到达的最接近的地方是什么?

4

1 回答 1

4

defprotocol 不能用于为其功能/方法提供实现。您需要使用 deftype 或 reify 或 extend / extend-type (或下拉到类来做到这一点。对于您的用例,您可以使用extend参考早期定义的函数来实现协议。

于 2012-05-24T07:19:57.093 回答