CartesianProduct
这个库提供了一个 product 函数,可以创建一个懒加载的笛卡尔积。
例如
let sequence = product(["a", "b"], ["c", "d"])
sequence.forEach { tuple in
print(tuple)
}
// prints
("a", "c")
("a", "d")
("b", "c")
("b", "d")
注意在上面的例子中,sequence 是一个 CartesianProduct2Sequence<Array<String>, Array<String>>,而不是 Array<(String, String)>。这意味着 sequence 并没有预先计算出两个数组积的所有值。
你可以向 product 函数传递最多 15 个参数(即使这样做可能不是个好主意)。
安装
使用 Cocoapods
只需将以下行添加到 Podfile 中:
pod 'CartesianProduct'
使用 Swift Package Manager
要将 CartesianProduct 包含到一个 Swift Package Manager 包中,请将它添加到定义在 Package.swift 文件中的 dependencies 属性中。
dependencies: [
.Package(url: "https://github.com/felginep/CartesianProduct.git", majorVersion: <majorVersion>, minor: <minor>)
]
生成的内容
使用GYB生成《CartesianProduct.swift》文件。
您可以通过以下方式下载GYB:
wget https://github.com/apple/swift/raw/master/utils/gyb
wget https://github.com/apple/swift/raw/master/utils/gyb.py
chmod +x gyb
然后使用make generate命令。
运行测试
运行make test命令。
作者
- 皮埃尔·费尔吉内斯 博客
许可证
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。
致谢
- 感谢Joshua Emmons的文章Lazy Cartesian Products in Swift