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。
对于旧版本的 Swift 和 Xcode,请参阅之前的版本。
Swift Package Manager 是用于管理 Swift 代码分发的官方工具。目前仅适用于所有 Apple 平台。它也可以用于 Linux,但本项目目前尚未完全支持。
如果您使用它来管理您的依赖项,只需将 Currier 添加到您的 Package.swift 文件的 dependencies 值中。
dependencies: [
.package(url: "https://github.com/tigerpixel/Currier.git", from: "1.3.0")
]
Currier 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod "Currier"
如果您使用 Carthage 来管理您的依赖项,只需将以下行添加到您的 Cartfile 中
github "tigerpixel/Currier"
如果您使用 Carthage 构建您的依赖项,请确保您已将 Currier.framework
添加到您目标的“Linked Frameworks and Libraries”部分,并已将它们包含在您的 Carthage framework 复制构建阶段。
git submodule update --init --recursive
。Currier.xcodeproj
拖放到您的应用程序 Xcode 项目或工作区中。Currier.framework
添加到“Embedded Binaries”部分。EMBEDDED_CONTENT_CONTAINS_SWIFT
构建设置设置为“Yes”。Currier 在 MIT 许可证下可用。详细信息可以在 LICENSE 文件中找到。