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

raz*_*van 0 clojure

我试图从另一个ns访问"defrecord",我收到一个错误.我能够访问声明的"def"和声明的构造函数,但不能访问"defredord".这是代码:

(ns myapp.model)

(defrecord Person [fname lname])

(defn make-person [fname lname]
  (->Person fname lname))

(def p1 (make-person "John" "Doe"))
Run Code Online (Sandbox Code Playgroud)
(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"))
Run Code Online (Sandbox Code Playgroud)

谢谢R.

Sva*_*nte 5

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

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