2017-11-15 6 views
0

別のnsから「defrecord」にアクセスしようとしましたが、エラーが発生します。 宣言された "def"と宣言されたコンストラクタにアクセスできますが、 "defredord"ではアクセスできません。 これはコードです:あなたは->を誤解Clojure:別の名前空間でdefrecordが宣言されました

(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.

答えて

5

。これは構文ではなく、単に命名規則です。

コンストラクタ関数の名前は->Personです。修飾されているため、model/->Personです。

+0

ありがとうございます。 – razvan

関連する問題