FxSwift 0.0.2

FxSwift 0.0.2

Jason Bandy 维护。



FxSwift 0.0.2

  • HCA Healthcare

FunctionalSwift

Version License Platform Carthage compatible Swift 4.2

嘿!欢迎使用FunctionalSwift,这是我们在HCA使用Swift语言采用函数式编程风格的框架。

目录
安装
使用
贡献
许可

安装

Carthage

如果您使用Carthage,请将以下行添加到您的 Cartfile

github "HCAHealthcare/FunctionalSwift" ~> 1.0

然后运行 carthage bootstrap

有关Carthage使用的更多信息,请查看他们官方文档

Cocoapods

如果您使用Cocoapods,请将这些行添加到您的 Podfile

use_frameworks!
pod 'FunctionalSwift', '~> 1.0'

然后,运行 pod install

有关Cocoapods的详细介绍,请查看他们官方文档

使用说明

首先,您需要导入框架

import FunctionalSwift

常用运算符

正向应用 |>

将数据传入函数

示例

let result = "String Data" 
|> stringToResult

反向应用 <|

将数据传入函数

示例

let utf8String =  flip(curry(String.init(data:encoding:)))
<| .utf8

单类型组合 <>

组合两种返回相同类型的函数

示例

let backgroundViewStyle = set(\UIView.backgroundColor, .white) 
<> set(\UIView.translatesAutoresizingMaskIntoConstraints, false)

正向组合 >>>

组合两种返回相同或不同类型的函数

示例

let isSuccess = utf8String         // Data -> String
>>> boolValue  // String -> Bool

let result = dataResponse
|> isSuccess

常用函数

curry

将多参数函数转换为返回函数的纯函数,从而可以链式添加输入

示例

let stringFromData = String.init(data:encoding)   // (Data, String.Encoding) -> String?
let curriedStringFromData = curry(stringFromData) // (Data) -> (String.Encoding) -> String?

flip

常与curry一起使用。flip交换了currying输入的执行顺序

示例

let stringFromData = String.init(data:encoding)         // (Data, String.Encoding) -> String?
let curriedStringFromData = curry(stringFromData)       // (Data) -> (String.Encoding) -> String?
let flippedStringFromData = flip(curriedStringFromData) // (String.Encoding) -> (Data) -> String?
let utf8String = .utf8 |> flippedStringFromData         // (Data) -> String?

set

使用Swift的Keypaths进入Root类型,在给定路径上设置值并返回原始Root值的副本

示例

let backgroundView = self.view
|> set(\UIView.backgroundColor, .white)                          //Root => UIView, Path => UIColor
<> set(\.translatesAutoresizingMaskIntoConstraints, false)       //Root => UIView, Path => Bool

贡献

我们欢迎所有贡献,请提交拉取请求;如果您遇到任何问题,请创建问题。

许可协议

此项目采用Apache 2.0 许可协议。更多信息请参阅 许可协议