clojure - 在clojure中向 map 添加类型的最简单方法

标签 clojure

我正在寻找向 clojure map 添加类型的最简单方法
我知道我可以使用记录来做到这一点,但我想知道我是否可以使用常规 map 来做到这一点

我有一个函数来创建代表一个人的 map :

(defn person [first-name last-name] {:first-name first-name :last-name last-name})

我希望能够做这样的事情:
(def wayne (person "Wayne" "Shorter"))
....
(type wayne) 
=> person  

最佳答案

你可以附上一些 metadata :

(defn person [first-name last-name]
      (with-meta {:first-name first-name :last-name last-name}
                 {:type 'Person}))

(def wayne (person "Wayne" "Shorter"))

(type wayne) ;; Person

关于clojure - 在clojure中向 map 添加类型的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614905/

相关文章:

emacs - emacs 中的 clojure cider repl 无法从核心异步回调打印

clojure - 为什么 clojure 中的 Symbol 可以用作函数?

clojure - 了解 Clojure 中延迟斐波那契实现的执行

Clojure:如何构建桌面 UI

clojure - `loop` 和 `with-redefs` 不能一起玩

clojure - 为什么以下带有 channel sub/unsub 的代码会出现内存泄漏?

clojure - 如何在 :release-tasks when releasing a clojure leiningen project? 中使用 lein exec 任务

clojure - core.async 不是违背 Clojure 原则吗?

clojure - Clojure 中的多元定义——首场比赛先发球?

clojure - Clojure 中的单元测试