读取器

Swift 4.2 Build Status Carthage compatible

Swift 中的 Reader Monad 模式,灵感来自 使用 Scala 的实现

概述

Reader 是一个包装器,用于接收 Input 并产生 Element 的函数。

// init(_:)
let reader = Reader<Int, Int> { $0 + 2 }

// execute(_:)
reader.execute(1) // 3
reader.execute(2) // 4

// map(_:)
reader
    .map { $0 * 2 }
    .execute(3) // 10

// flatMap(_:)
reader
    .flatMap { i1 in Reader<Int, Int> { i2 in i1 * i2 } }
    .execute(4) // 24

💉

使用 Reader 可以实现简单且静态的依赖注入 (Dependency Injection)

示例:Playground

安装

Carthage

将以下行添加到你的 Cartfile 中,并运行 carthage update

github "to4iki/Reader"

Swift Package Manager

将以下行添加到你的 Package.swift 中,并运行 swift build

dependencies: [
    .Package(url: "https://github.com/to4iki/Reader.git", majorVersion: 0)
]