How to implement a Mutable Ordered Set generic type formerly known as NSMutableOrderedSet in native Swift?(如何在本机 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?)
问题描述
我正在尝试实现一个通用的 Mutable Ordered Set 类型,它需要符合许多协议才能像 Swift 中的 Array 和 Set 一样运行.首先要实现泛型类型元素需要符合 Hashable
并且通用结构需要符合 RandomAccessCollection
, SetAlgebra
, ExpressibleByArrayLiteral
,AdditiveArithmetic
, RangeReplaceableCollection
和 MutableCollection
.我还想允许下标访问它的 SubSequence
添加对 PartialRangeThrough
、PartialRangeUpTo
、PartialRangeFrom
和 的支持>UnboundedRange
也是如此.
这是我的通用 OrderedSet
结构声明:
尽管这是一个自我回答的问题,但我真的很感激并鼓励新的答案,对此实施的一些反馈和/或关于如何修复/改进它的建议:
编辑/更新:
sorted
方法按预期工作,但变异 sort
它甚至没有改变元素顺序.
可变集合
声明变异
函数排序()
当 Self 符合 RandomAccessCollection 且 Element 符合 Comparable 时可用.
我该如何解决?
可变有序集的原生 Swift 实现:
<块引用>
符合 MutableCollection 协议
要将 MutableCollection 协议的一致性添加到您自己的自定义集合中,请升级您的类型的下标以支持读取和写入访问.存储在 MutableCollection 实例的下标中的值随后必须可以在同一位置访问.也就是说,对于可变集合实例 a、索引 i 和值 x,以下代码示例中的两组赋值必须相等: