Clojure中的元数据保存

时间:2016-02-19 20:31:36

标签: clojure metadata

来自docs

  

只要派生新数据结构的函数返回   具有相同类型的集合,将保留元数据;这是   如果类型因转换而发生变化,则不成立。

然而

subvec

为什么元数据会丢失?不会v返回与money2类型相同的集合,即向量吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下你需要保留元信息,subvec返回一个与前一个无关的全新向量,并在进程中删除元信息。

(def sv (with-meta (subvec v 0 2) (meta v)))

大多数函数将以您使用子集的方式保留元信息。

正如@muhuk指出的那样:

https://github.com/funcool/clojurescript-unraveled/blob/master/src/language-advanced.adoc#values