Clojure:从defrecord中提取字段

时间:2017-11-08 07:37:16

标签: clojure

我想从 person1 中提取以下代码片段中的城市字段:

(defrecord Address [city state])

(defrecord Person [firstname lastname ^Address address])

(defn make-person ([fname lname city state]
               (->Person fname lname (->Address city state))))
(def person1 (make-person "Mark" "Smith" "LA" "CA"))

谢谢, R上。

2 个答案:

答案 0 :(得分:1)

(prn (str (:state (:address person1))))

答案 1 :(得分:1)

您可以像地图一样使用defrecord。 person1记录具有以下结构:

{:address   #ns.Address {:city "LA", :state "CA"},
 :firstname "Mark",
 :lastname  "Smith"}

这就是您可以通过以下方式访问现场城市的原因:

 (:city (:address person1))
 ==> "LA"