Utilizzando lein repl
con Clojure 1.4.0, posso definire un ^:const
di un array di byte Java, ma non posso poi fare qualsiasi cosa con esso:Perché non posso usare Clojure:^const con un array di byte Java?
user=> (def x (byte-array (map byte [0 1 2 3])))
#'user/x
user=> (alength x)
4
user=> (type x)
[B
user=> (def ^:const cx (byte-array (map byte [0 1 2 3])))
#'user/cx
user=> (alength cx)
CompilerException java.lang.RuntimeException: Can't embed object in code, maybe print-dup not defined: [[email protected], compiling:(NO_SOURCE_PATH:1)
user=> (type cx)
CompilerException java.lang.RuntimeException: Can't embed object in code, maybe print-dup not defined: [[email protected], compiling:(NO_SOURCE_PATH:1)
Ho confermato questo accade nella mia app pure , quindi non è solo un problema REPL.
Cosa mi manca?
Grazie Joost, è molto istruttivo! –
Provengo da uno sfondo non Java, e stamattina ho passato un po 'a rincorrere questo problema, dove il mio valore era un file java.io.File. Questa domanda e risposta sono state utili per cogliere il "perché" che ho capito cosa stava succedendo. –