2 Stimmen

Clojure: defprotocol, Standardimplementierung, nicht inlined

編集

Diese Frage macht keinen Sinn, weil ich ein Idiot bin und die Clojure-Dokumentation falsch gelesen habe.

Was ich habe:

Ich habe etwas Ähnliches:

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

Was ich bevorzugen würde:

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

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

Frage

Ist das möglich? Wenn nicht, wie komme ich der Sache am nächsten?

4voto

Joost Diepenmaat Punkte 17508

Defprotocol kann nicht verwendet werden, um Implementierungen für seine Funktionen/Methoden bereitzustellen. Dazu müssen Sie deftype oder reify oder extend / extend-type (oder drop down zu Klassen) verwenden. Für Ihren Anwendungsfall können Sie verwenden extend um auf früher definierte Funktionen zur Implementierung eines Protokolls zu verweisen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X