dos archivosconfundido acerca de la resolución de nombre de clase
types.clj:
(ns test.types)
(defrecord Price [date price])
(defrecord ProductPrice [name prices])
core.clj (de lo bien)
(ns test.core
(:use [test.types])
(:use [clojure.string :only (split)]))
(defn read-data [file]
(let [name (subs (.getName file) 0 4)]
(with-open [rdr (clojure.java.io/reader file)]
(doall (map #(apply ->Price (split % #"\t")) (drop 2 (line-seq rdr)))))))
core.clj (java.lang.IllegalArgumentException: No se puede para resolver classname: ProductPrice)
(ns test.core
(:use [test.types])
(:use [clojure.string :only (split)]))
(defn read-data [file]
(let [name (subs (.getName file) 0 4)]
(with-open [rdr (clojure.java.io/reader file)]
(ProductPrice. name (doall (map #(apply ->Price (split % #"\t")) (drop 2 (line-seq rdr))))))))
core.clj (de lo bien)
(ns test.core
(:use [test.types])
(:use [clojure.string :only (split)]))
(defrecord tProductPrice [name prices])
(defn read-data [file]
(let [name (subs (.getName file) 0 4)]
(with-open [rdr (clojure.java.io/reader file)]
(tProductPrice. name (doall (map #(apply ->Price (split % #"\t")) (drop 2 (line-seq rdr)))))))
core.clj (java.lang.IllegalStateException: -> ProductPrice ya se refiere a: # 'test.types/-> ProductPrice de espacio de nombres: test.core)
(ns test.core
(:use [test.types])
(:use [clojure.string :only (split)]))
(defrecord ProductPrice [name prices])
(defn read-data [file]
(let [name (subs (.getName file) 0 4)]
(with-open [rdr (clojure.java.io/reader file)]
(ProductPrice. name (doall (map #(apply ->Price (split % #"\t")) (drop 2 (line-seq rdr)))))))
Estoy totalmente confundido acerca de estas excepciones. Y no puedo encontrar más uso sobre 'registro' excepto algunos ejemplos simples de clojure.org y libros.
Cualquier ayuda, muchas gracias!
Tenga en cuenta que el guión/subrayan mangling en los nombres de espacio de nombres provoca confusión en este punto. Si '' defrecord'' algo en el espacio de nombres '' clj-test'' creará una clase en el paquete '' clj_test'' y tu '': import'' deberá reflejar esto – sw1nn
@Joost Diepenmaat ¡Gracias! ¿Por qué '-> Price' se puede usar sin importar? Y 'importación' no parece funcionar para mí, aún "java.lang.RuntimeException: java.lang.ClassNotFoundException: test.types.ProductPrice" – Kane
-> Price es una función auxiliar adicionalmente generada que es una función real de clojure, y así se exporta cuando 'usa' el paquete. Además, debe asegurarse de que los tipos de registro estén compilados ('use' o' require' el espacio de nombres en el que están definidos) antes de que pueda 'importarlos'. Si no puede lograr que funcione, cree una nueva pregunta con un código de ejemplo. –