Swiftx 是一个 Swift 库,包含函数式抽象和对 Swift 标准库的扩展。Swiftx 提供了一种更小巧、更简单的方式,将纯函数式数据类型引入任何代码库。
如需功能更全面的库,请查看 Swiftz。
Swiftx 可以通过以下两种方式包含到项目中
框架
Swiftx.xcodeproj
或 Swiftx-iOS.xcodeproj
拖拽到您的项目树中作为子项目Frameworks
独立
Swiftx/Swiftx
下的 swift 文件复制到您的项目中。Swiftx 提供了许多通用的数据类型和抽象,任何代码库都可以使用。
一个小例子
import Swiftx
let str : String? = .Some("Hello ")
let greeting = (+"World") <^> str // .Some("Hello World")
与现有平台库的无缝交互也能够以最小的努力实现
import Foundation
import struct Swiftx.Result
/// result now contains either an array of file paths or the error generated by `NSFileManager`.
let result : Result<[String]> = from({ ep in
let documentsDirectory : String = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String)
return (NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentsDirectory, error: ep) as [String]?) ?? []
})
Swiftx 甚至可以帮助表达空值或错误
import Swiftx
/// We may not be able to do what we said we'd do, but this definition compiles. At runtime,
/// any code that invokes this function will immediately halt the program.
func provePEqualsNP() -> Proof<P, NP> {
return undefined()
}
Swiftx 支持 OS X 10.9+ 和 iOS 8.0+。
Swiftx 基于 BSD 许可证发布。