【问题标题】:Clojure: Extract field from defrecordClojure:从defrecord中提取字段
【发布时间】:2017-11-08 07:37:16
【问题描述】:

我想从 person1 中提取 city 字段,代码如下:

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

【问题讨论】:

    标签: clojure


    【解决方案1】:
    (prn (str (:state (:address person1))))
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        相关资源
        最近更新 更多