Frage

Bei der Verwendung von reify in Clojure, wie kann ich einen Ausdruck für den Konstruktor zur Verfügung stellen?

Alternativ, wie kann ich übergeben Argumente an die Basisklassenkonstruktor?

War es hilfreich?

Lösung

Sie können nicht reify zu Unterklasse & instantiate Klassen verwenden - es ist nur gemeint, für die Verwendung mit Protokollen und Schnittstellen. (Sie können Implementierungen von Methoden der Object bieten, though.)

Um anonyme Subklassen von beliebigen Klassen zu instanziiert und / oder Schnittstellen, Verwendung proxy. Alle Argumente an die übergeordnete Klasse ctor eines Proxy, wenn überhaupt, gehen in die args Vektor (das zweite Argument) der proxy Form:

(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
  ; method impls follow
  ...
  )

Siehe (doc proxy) für weitere Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top