Currier
Currier 将任何 Swift 函数转换为该函数的柯里化版本。这是通过将其包装在一个简单的 'curry' 调用中实现的。
给定以下函数
func myMultiply(first: Float, second: Int) -> Double {
return Double(first) * Double(second)
}
Currier 将生成一个柯里化版本
let curriedMultiply: (Float) -> (Int) -> Double = curry(myMultiply) // Currier used here!
let multiplyByTwo: (Int) -> Double = curriedMultiply(2.0) // Partial application
let result: Double = multiplyByTwo(10)
assert(20 == result) // Assertion true
前面的例子可以简化为以下内容
let sameResult = curry(myMultiply)(2.0)(10)
单元测试提供了使用不同数量参数调用 curry 函数的实例。接受两个参数的函数版本明确指定了类型并附加了注释。
要求
此项目没有外部要求,只需要 Swift。
- iOS 8.0+ / macOS 10.9+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 11+
- Swift 5.1+
对于 Swift 和 Xcode 的旧版本,请参阅先前版本。
安装
Swift 包管理器
Swift 包管理器是管理 Swift 代码分布的官方工具。目前它仅在所有 Apple 平台上可用。它也可以与 Linux 一起使用,但此项目目前对该功能的支持并不完全。
如果您使用它来管理您的依赖项,只需将 Currier 添加到您的 Package.swift 文件中的 dependencies 值即可。
dependencies: [
.package(url: "https://github.com/tigerpixel/Currier.git", from: "1.3")
]
Cocoapods
您可以通过 CocoaPods 获取 Currier。要安装它,只需将以下行添加到您的 Podfile。
pod "Currier"
Carthage
如果您使用 Carthage 来管理您的依赖项,只需将以下行添加到您的 Cartfile。
github "tigerpixel/Currier"
如果您使用 Carthage 构建您的依赖项,请确保您已经将 Currier.framework
添加到您的目标的 "链接的框架和库" 部分,并在您的 Carthage 框架复制构建阶段中包含它们。
Git 子模块
- 将 Currier 存储库添加为您的应用程序存储库的 子模块。
- 在 Currier 文件夹内运行
git submodule update --init --recursive
。 - 将
Currier.xcodeproj
拖放到您的应用程序的 Xcode 项目或工作空间中。 - 在您的应用程序目标设置的 “常规” 选项卡中,将
Currier.framework
. 添加到 “嵌入的二进制文件” 部分。 - 如果您的应用程序目标不包含任何 Swift 代码,您还应该将
EMBEDDED_CONTENT_CONTAINS_SWIFT
编译设置设置为 “是”。
MIT 许可证
Currier 根据 MIT 许可证提供。详细信息可以在 LICENSE 文件中找到。