You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用assoc函数创建Clojure示例数据库db-sample?

使用assoc创建Clojure示例数据库

首先明确:assoc的核心作用是向map中添加或更新键值对,它本身不负责创建向量,但你可以把**已经构建好的向量(包括嵌套向量、map的向量)**作为值,通过assoc绑定到对应的键上。

用assoc构建目标数据库

你可以从空map开始,一次性或分步用assoc添加各个键值对:

;; 一次性完成构建
(def db-sample
  (assoc {}
         :person [{:person/id 9
                   :name "rich"
                   :surname "hickey"
                   :join-date "04.04.2016"
                   :experience :experience/lead
                   :loyality-level :loyality-level/more-than-seven-years
                   :work-type :work-type/tenure
                   :work-time :work-time/part-time}]
         :employees/developer-team [{:frontend [[:person/id 1]
                                                [:person/id 2]
                                                [:person/id 3]
                                                [:person/id 4]]}]))

如果需要分步操作(比如分多次修改map),也可以拆分调用:

;; 先初始化空map并添加person数据
(def db-sample (assoc {} :person [{:person/id 9 :name "rich" ...}]))
;; 再添加团队配置数据
(def db-sample (assoc db-sample :employees/developer-team [{:frontend [...]}]))

更简便的替代方案

如果不是必须练习assoc,直接用Clojure的map字面量定义是最直观高效的方式,和你给出的示例结构完全一致(注意补全原示例中缺失的闭合括号,保证语法正确):

(def db-sample 
  {
   :person [{:person/id 9 :name "rich" :surname "hickey" :join-date "04.04.2016" :experience :experience/lead :loyality-level :loyality-level/more-than-seven-years :work-type :work-type/tenure :work-time :work-time/part-time}]

   :employees/developer-team [{:frontend  [[:person/id 1] [:person/id 2] [:person/id 3] [:person/id 4]]}]
  })

内容的提问来源于stack exchange,提问作者Barış Can Ateş

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:56:05