我对在clojure中使用瞬变有点迷茫。任何帮助将不胜感激。示例代码:
(defn test-transient [v]
(let [b (transient [])]
(for [x v] (conj! b x))
(persistent! b)))
user> (test-transient [1 2 3])
[]
我试图在返回之前使其持久化,结果是:
(defn test-transient2 [v]
(let [b (transient [])]
(for [x v] (conj! b x))
(persistent! b)
b))
user> (test-transient2 [1 2 3])
#<TransientVector clojure.lang.PersistentVector$TransientVector@1dfde20>
但是如果我使用 conj! 单独看来工作正常:
(defn test-transient3 [v]
(let [b (transient [])]
(conj! b 0)
(conj! b 1)
(conj! b 2)
(persistent! b)))
user> (test-transient3 [1 2 3])
[0 1 2]
for 有一些限制吗?如果是这样,我如何将值从持久向量复制到瞬态?
谢谢你。