Swift 算法

Swift 算法 是一个开源的序列和集合算法包,以及它们相关的类型。

概述

算法包提供了各种序列和集合操作,允许你循环遍历集合的元素,查找组合和排列,创建随机样本等等。

例如,该包包含一组“分块”方法,每种方法将一个集合分割成连续的子序列。 其中一个版本测试相邻的元素以找到块之间的断点 - 你可以使用它来快速将数组分成升序的运行。

let numbers = [10, 20, 30, 10, 40, 40, 10, 20]
let chunks = numbers.chunked(by: { $0 <= $1 })
// [[10, 20, 30], [10, 40, 40], [10, 20]]

另一个版本查找每个连续值的转换中的变化。 你可以使用它来按首字母将名称列表分成组。

let names = ["Cassie", "Chloe", "Jasmine", "Jordan", "Taylor"]
let chunks = names.chunked(on: \.first)
// [["Cassie", "Chloe"], ["Jasmine", "Jordan"], ["Taylor"]]

请通过以下链接探索更多的分块方法以及 Algorithms 包的其余部分。

文档

有关 API 文档,请参阅 Xcode 或 Web 上的库官方文档。

添加 Swift 算法作为依赖项

要在 SwiftPM 项目中使用 Algorithms 库,请将以下行添加到你的 Package.swift 文件中的依赖项中

.package(url: "https://github.com/apple/swift-algorithms", from: "1.2.0"),

"Algorithms" 作为你的可执行目标的一个依赖项包含进来

.target(name: "<target>", dependencies: [
    .product(name: "Algorithms", package: "swift-algorithms"),
]),

最后,将 import Algorithms 添加到你的源代码中。

源代码稳定性

Swift 算法包的源代码是稳定的;版本号遵循 语义化版本控制。 对公共 API 的破坏性源代码更改只能出现在新的主版本中。

swift-algorithms 包的公共 API 由在 Algorithms 模块中标记为 public 的非下划线声明组成。 不属于公共 API 的接口可能会在任何版本中继续更改,包括补丁版本。

该包的未来次要版本可能会根据需要对这些规则进行更改。

我们希望这个包能够快速采用与其职责相关的 Swift 语言和工具链的改进。 因此,我们预计该包的新版本会不时地要求客户端升级到更新的 Swift 工具链版本。 要求使用新的 Swift 版本只会导致次要版本号的增加。