Domanda

Quando si utilizza reify in Clojure, come posso fornire un'espressione per il costruttore?

In alternativa, come posso passare gli argomenti al costruttore della classe base?

È stato utile?

Soluzione

Non è possibile utilizzare reify alle classi delle sottoclassi e istanziare - ha significato solo per l'uso con i protocolli e interfacce. (È possibile fornire implementazioni di metodi di Object, però.)

Per istanziare sottoclassi anonimi di classi arbitrarie e / o interfacce, l'uso proxy. Tutti gli argomenti alla ctor superclasse di un proxy, se del caso, vanno nel vettore args (il secondo argomento) del modulo proxy:

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

Vedere (doc proxy) per maggiori dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top