2016-02-19 74 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'。 –

回答