clojure - 无法导入 Clojure 记录

标签 clojure

我创建了这样的记录:

(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/

相关文章:

clojure - 如何在不重置repl的情况下重新加载aot编译的类?

clojure - 提供可设置的全局变量

emacs - 有没有一种快速的方法来连接 clojure swank 和 slime 以便在 emacs 中快速复制?

clojure - 为什么需要使用 cons 来防止无限递归

string - 如何将字符串向量传递给 clojure 中的 java.shell?

clojure - 如何让 Leiningen 下载所需库的源代码?

scala - clojure 和 Scala 互操作

clojure - 通过远程 REPL 访问正在运行的 Clojure 系统

clojure - 有没有一种惯用的方法来干燥 clojure 中类似的函数定义?

java - 将 Clojure 函数作为 java.util.Function 传递