有限顺序集合 (LimitedOrderedSet)

这是 Swift 中有限顺序集合的实现,基于 OrderedSet

您可以使用此数据结构来限制集合中存储的非等项的数量。

安装

LimitedOrderedSet 可通过 Swift Package Manager 安装。

.package(url: "https://github.com/MrAsterisco/LimitedOrderedSet", from: "<see GitHub releases>")

最新版本

要了解最新版本,请查看此仓库的“Releases”标签。

使用方法

LimitedOrderedSet 的工作方式与 OrderedSet 完全相同,只是增加了一个限制。

您可以从任何 Sequence 创建 LimitedOrderedSet

let set = LimitedOrderedSet(["A", "B", "C"], limit: 3)

您指定的 limit 用于确定 OrderedSet 的最大容量。 您可以添加或插入项目到集合中,直到达到指定的限制。

let set = LimitedOrderedSet(limit: 2)
set.append("A") // ✅ Added
set.append("B") // ✅ Added

set.isFull // <-- ✅ true

set.append("B") // ❌ Not Added

如果指定索引,您还可以控制集合在已满时尝试添加新项目的行为。

let set = LimitedOrderedSet(["A", "B"], limit: 2)

// 1️⃣ Drop Last Item
set.insert("C", at: 1, ifFull: .dropLast)
print(set) // <-- ["A", "C"]

// 2️⃣ Drop First Item
set.insert("C", at: 1, ifFull: .dropFirst)
print(set) // <-- ["B", "C"]

// 3️⃣ Reject
set.insert("C", at: 1, ifFull: .reject) // ❌ Not Added
print(set) // <-- ["A", "B"], unchanged

文档

该类的定义已记录,但大多数方法尚未记录(但尚未完成)。 文档将在未来的版本中得到改进。

兼容性

LimitedOrderedSet 与所有 Apple 平台兼容。

LimitedOrderedSet 依赖于

贡献

欢迎所有扩展库的贡献。 Fork 该仓库,进行您想要的更改,然后打开一个 Pull Request。

如果您对代码库进行了更改,我不会强制执行编码风格,但我可能会要求您根据库的其余部分的制作方式进行更改。

状态

该库正在进行积极开发。 它已在一个生产应用中使用。

即使大多数 API 来自 Swift 标准库,它们将来可能会发生变化; 但您不必担心,因为发布将遵循 语义化版本 2.0.0

许可证

LimitedOrderedSet 在 MIT 许可证下分发。 有关详细信息,请参见 LICENSE