我创建了这样的记录:
(defrecord User [user-id email])
:但是当我尝试从另一个 namespace 访问它时,我收到错误:
(User. "name" "email")
java.lang.IllegalArgumentException:无法解析类名:用户
当我这样做时它会起作用:
(oe.model.modelcore.User. "name" "email")
:我知道我需要导入 Java 类,但是当我这样做时,clojure 有没有办法自动执行此操作:
(use 'oe.model.modelcore :reload)
最佳答案
从技术上讲,您必须需要它(不一定需要使用它),以便编译包含记录定义的文件并创建类。然后您必须导入它,以便可以将其构造为 Java 类。如果您在第一个 ns 中创建一个构造函数,例如
(defn new-user [id email]
(User. id email))
那么你就不需要将它导入到调用的 ns 中。
我不久前在这里写过这个:
关于clojure - 无法导入 Clojure 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580462/