2017-11-15 10 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