我想提供一个基于Javascript Typed Arrays的向量的 Clojurescript 实现,它支持 assoc、replace 等。我想我想这样做(也许有更好的方法,或者也许有人已经做到了?)。大概我会使用 deftype,但我应该为哪些协议提供“混凝土”?
问问题
493 次
1 回答
3
让我们看看内置向量实现了什么。您可以在 github 上查看源代码。
看起来是:Object
, IWithMeta
, IMeta
, IStack
, ICollection
, IEmptyableCollection
, ISequential
, IEquiv
, IHash
, ISeqable
, ICounted
, IIndexed
, ILookup
, IMapEntry
, IAssociative
, IVector
, IReduce
, IKVReduce
, IFn
, IEditableCollection
and IReversible
.
这很多,但是由于每个方法都定义了一种或最多两种方法,所以工作量并不大。另外,您可以保留其中的一些未实现,例如IEditableCollection
哪些仅用于瞬态或IReduce
哪些用于新的减速器功能。
您甚至不必让您的新数据结构完全像内置 Vector 一样工作。例如,你可以让它实现所有顺序的东西,而不用担心地图的东西,当然,它不如普通的 Vector 方便。
于 2013-01-03T00:50:50.087 回答