您可以通过实现两个核心协议来使js/BigInt
与哈希表一起工作
- cljs.core/IHash
- cljs.core/IEquiv
这意味着
(extend-type js/BigInt
IHash
(-hash [this] ... impl ...)
IEquiv
(-equiv [this other] ... impl ...))
(可能在没有IEquiv的情况下工作得很好,不确定)
您可以在自己的代码中这样做。我没有对js/BigInt
做任何事情,所以我不知道具体的实现会是怎样的。但应该是很容易的。您可以在cljs.core
的源代码中查找其他类型的示例实现。
如果没有实现这些协议,它将使用默认实现,为js/BigInt
的每个新实例分配一个唯一的id作为“哈希”。这就是为什么它在哈希表中不起作用。