作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想提供基于 Javascript Typed Arrays 的向量的 Clojurescript 实现,它支持 assoc、replace 等。我想我想这样做(也许有更好的方法,或者也许有人已经做到了?)。想必我会使用 deftype,但是我应该为哪些协议(protocol)提供“具体内容”?
最佳答案
让我们看看内置向量实现了什么。可以查看源码here, on github .
看起来是:Object
、IWithMeta
、IMeta
、IStack
、ICollection
>、IEmptyableCollection
、ISequential
、IEquiv
、IHash
、ISeqable
、 ICounted
、IIndexed
、ILookup
、IMapEntry
、IAssociative
、IVector
、IReduce
、IKVReduce
、IFn
、IEditableCollection
和 IReversible
。
数量很多,但由于每个方法都定义一个或最多两个方法,所以工作量并不大。另外,您可以保留其中一些未实现,例如仅用于 transient 的 IEditableCollection
或用于新 reducer 函数的 IReduce
。
您甚至不必让新数据结构完全像内置 Vector 一样工作。例如,您可以让它实现所有顺序的东西,而不用担心 map 的东西,尽管当然它会比普通的 Vector 方便。
关于protocols - 如何在 Clojurescript 中使用 deftype 实现关联结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116299/
我是一名优秀的程序员,十分优秀!