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