我學習的Clojure和在這個過程中遇到了這個例子來自O'Reilly出版的書「的Clojure編程」:爲什麼`persistent!`只能得到瞬態的前8個項目?
(let [tm (transient {})]
(doseq [x (range 100)]
(assoc! tm x 0))
(persistent! tm))
它給出結果{0 0, 1 0, 2 0, 3 0, 4 0, 5 0, 6 0, 7 0}
。
另外:
(let [tm (transient {})]
(assoc! tm 0 0)
(assoc! tm 1 0)
(assoc! tm 2 0)
(assoc! tm 3 0)
(assoc! tm 4 0)
(assoc! tm 5 0)
(assoc! tm 6 0)
(assoc! tm 7 0)
(assoc! tm 8 0)
(persistent! tm)
)
給出了相同的結果:{0 0, 1 0, 2 0, 3 0, 4 0, 5 0, 6 0, 7 0}
。
爲什麼只有前8個項目才能進入持久性收集?
可能的重複[在Clojure 1.3中使用瞬態時存在什麼問題?](http://stackoverflow.com/questions/8971675/what-gotchas-exist-when-working-with-transient-in-clojure- 1-3) – amalloy
我不認爲這是一個重複的問題,儘管兩者的答案都是一樣的。 – Ben