Clojure:在另一个命名空间中访问声明的defrecord

时间:2017-11-15 12:11:06

标签: clojure

我正在尝试访问" 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上。

1 个答案:

答案 0 :(得分:5)

你误解了->。它不是语法,而只是命名约定。

构造函数的名称是->Person,因此是合格的,model/->Person