Currier

Build Status Version Platform Carthage compatible License

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 Package Manager 是用于管理 Swift 代码分发的官方工具。目前仅适用于所有 Apple 平台。它也可以用于 Linux,但本项目目前尚未完全支持。

如果您使用它来管理您的依赖项,只需将 Currier 添加到您的 Package.swift 文件的 dependencies 值中。

dependencies: [
.package(url: "https://github.com/tigerpixel/Currier.git", from: "1.3.0")
]

Cocoapods

Currier 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中

pod "Currier"

Carthage

如果您使用 Carthage 来管理您的依赖项,只需将以下行添加到您的 Cartfile 中

github "tigerpixel/Currier"

如果您使用 Carthage 构建您的依赖项,请确保您已将 Currier.framework 添加到您目标的“Linked Frameworks and Libraries”部分,并已将它们包含在您的 Carthage framework 复制构建阶段。

Git Submodule

  1. 将 Currier 仓库添加为您应用程序仓库的 子模块
  2. 从 Currier 文件夹中运行 git submodule update --init --recursive
  3. Currier.xcodeproj 拖放到您的应用程序 Xcode 项目或工作区中。
  4. 在您的应用程序目标设置的“General”选项卡上,将 Currier.framework 添加到“Embedded Binaries”部分。
  5. 如果您的应用程序目标完全不包含 Swift 代码,您还应该将 EMBEDDED_CONTENT_CONTAINS_SWIFT 构建设置设置为“Yes”。

MIT 许可证

Currier 在 MIT 许可证下可用。详细信息可以在 LICENSE 文件中找到。