Clojure:defprotocol,默认实现,未内联 编辑

Clojure:defprotocol,默认实现,未内联 编辑,clojure,Clojure,这个问题毫无意义,因为我是个白痴,并且误读了Clojure的文档 我所拥有的: 我有这样的想法: (defprotocol Foo "doc" [foo bar] (Foo-bark [foo]) (Foo-meow [foo]) (Foo-other [foo] ... long multi line inline implementation)) 我更喜欢: 问题 上述情况是否可能?如果没有,最接近它的是什么?无法使用defpr

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

我所拥有的: 我有这样的想法:

(defprotocol Foo "doc" [foo bar]
  (Foo-bark [foo])
  (Foo-meow [foo])
  (Foo-other [foo]
     ... long
     multi
     line
     inline
     implementation))
我更喜欢: 问题
上述情况是否可能?如果没有,最接近它的是什么?

无法使用defprotocol为其功能/方法提供实现。您需要使用deftype、具体化、扩展/扩展类型或下拉到类来实现这一点。对于您的用例,您可以使用extend引用先前定义的函数来实现协议。

defprotocol不能用于提供其函数/方法的实现。您需要使用deftype、具体化、扩展/扩展类型或下拉到类来实现这一点。对于您的用例,您可以使用extend引用先前定义的函数来实现协议。

您是否试图在协议定义本身中实现协议函数?我目前正在协议定义本身中实现协议函数。我不希望这样做,因为当我只想扫描函数是什么而不关心它们是如何实现的时候,它会妨碍可读性。defprotocol不能用于为其函数/方法提供实现。您需要使用deftype或reify来执行此操作。您是否试图在协议定义本身中实现协议功能?我目前正在协议定义本身中实现协议功能。我不希望这样做,因为当我只想扫描函数是什么而不关心它们是如何实现的时候,它会妨碍可读性。defprotocol不能用于为其函数/方法提供实现。您需要使用deftype或具体化来实现这一点。
(defprotocol Foo "doc" [foo bar]
  (Foo-bark [foo])
  (Foo-mewo [foo])
  (Foo-other [foo]))

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