gpt4 book ai didi

clojure - 如何从 Clojure 中的 transient 映射中获取 key ?

转载 作者:行者123 更新时间:2023-12-02 13:56:51 24 4
gpt4 key购买 nike

我正在尝试获取 transient 映射中所有键的序列:

(keys {3 4 5 6 7 8}) 给出 (3 5 7)

正如我所料,但是:

(keys (transient {3 4 5 6 7 8}))

给出

#<CompilerException java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.PersistentArrayMap$TransientArrayMap (NO_SOURCE_FILE:346)>

同样,我如何使用 transient 映射进行处理?

(map identity {3 4 5 6})

给出

([3 4] [5 6])

但是

(map identity (transient {3 4 5 6}))

给出

#<IllegalArgumentException java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.PersistentArrayMap$TransientArrayMap>

最佳答案

由于惰性和可变性之间的相互作用,这实际上是不可能的。 (keys m) 始终返回由不可变的 m 数据结构支持的惰性序列,根据需要计算元素。但如果m是 transient 的,它可能随时改变,这会破坏惰性键序列。你真的不应该对 transient 做任何过于花哨的事情;而且因为创建数据结构的 transient 或持久版本非常便宜,所以如果您确实想做一些奇特的事情,来回几次并不会太麻烦。

关于clojure - 如何从 Clojure 中的 transient 映射中获取 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com