Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure:访问另一个命名空间中声明的defrecord_Clojure - Fatal编程技术网

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

Clojure:访问另一个命名空间中声明的defrecord,clojure,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")) 谢谢 R.您误解了->。它不是

我试图从另一个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"))

谢谢
R.

您误解了
->
。它不是语法,只是一种命名约定


构造函数的名称是
->Person
,因此被限定为
model/->Person

您误解了
->
。它不是语法,只是一种命名约定


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

感谢您的澄清。感谢您的澄清。
(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"))