我正在尝试访问" defrecord"从另一个ns,我得到一个错误。 我能够访问声明的" def"和声明的构造函数,但不是" defredord"。 这是代码:
(ns myapp.model)
(defrecord Person [fname lname])
(defn make-person [fname lname]
(->Person fname lname))
(def p1 (make-person "John" "Doe"))
(ns ibercode.core
(:require [myapp.model :as model]))
;;OK
(def p2 (model/make-person "John" "Doe"))
;;OK
(prn model/p1)
;;clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: No
;;such namespace: ->model, compiling:
(def p3 (->model/Person "John" "Doe"))
由于 R上。
答案 0 :(得分:5)
你误解了->
。它不是语法,而只是命名约定。
构造函数的名称是->Person
,因此是合格的,model/->Person
。