2016-02-19 77 views
0

ClojureScript Unraveled元数据保存用Clojure

只要其导出新数据结构的函数返回 集合与同类型,元数据将被保留;如果类型因转换而改变,则这是 不正确。

然而

(def v (with-meta [0 1 2 3] {:foo :bar})) 
;; => [0 1 2 3] 

(def sv (subvec v 0 2)) 
;; => [0 1] 

(meta sv) 
;; => nil ; where did the metadata? 

为什么丢失的元数据? subvec是否返回与v相同类型的集合,即矢量?

+1

你看了下句? “......如果类型因变换而改变,那么这就不是真的了。为了说明这一点,让我们看看当我们从矢量派生一个seq或一个子矢量时会发生什么” – muhuk

+2

@ muhuk但是当*类型不*你使用'subvec'。 –

回答