您可以通过实现使js/BigInt与哈希表一起工作的两个核心协议来让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
源文件中查找其他类型实现的例子。
如果没有实现这些协议,它将使用默认实现,该实现将唯一id作为“哈希”分配给每个新的js/BigInt
实例。这就是为什么它不能与哈希表一起使用。