Clojure:访问另一个命名空间中声明的defrecord
我试图从另一个ns访问一个“defrecord”,但出现了一个错误。 我可以访问已声明的“def”和已声明的构造函数,但不能访问“defredord”。 代码如下: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 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"))