tengo algo de código Clojure que está tratando de Interop través de un par de capas de código Java (en este caso, java.nio.Path
a través de java.nio.file.WatchEvent<?>
:¿Cómo se puede escribir una sugerencia dentro de la macro de subprocesamiento (->)?
(defn unroll-event
[^WatchEvent event]
{ :kind (.kind event)
:context (.context event)
:path (-> event .context .toAbsolutePath .toString)})
En este código, no tengo tipo insinuó event
, de modo que lo haría Creo que debe ser capaz de averiguar lo que se supone .context
para volver, y como tal, será capaz de averiguar lo que .toAbsolutePath
y .toString
hacer. Creo que en este caso, ya que .context
se define ha de devolver un tipo genérico de T
, me Me pregunto si puedo escribir la llamada al .context
. He intentado solo preceder g ^java.nio.file.Path
-.context
y ^Path
y ^String
-.toAbsolutePath
y toString
, respectivamente, pero aún así obtener las advertencias:
Reflection warning, junkcode/core.clj:28 - reference to field toAbsolutePath can't be resolved.
Reflection warning, junkcode/core.clj:28 - reference to field toString can't be resolved.
¿hay algo que pueda hacer en este caso? ¿Es porque ->
es una macro y existen reglas especiales para la tipificación de tipo dentro de eso?
¿A qué se está expandiendo? Use 'clojure.walk/macroexpand-all' – noahlz