ReactiveSwift 函数响应式编程库开源项目

我要开发同款
匿名用户2017年02月07日
99阅读
开发技术Swift
所属分类常用工具包、程序开发
授权协议MIT

作品详情

ReactiveSwift是出自ReactiveCocoa小组的纯Swift风格FRP。ReactiveSwift提供了可组合、可声明以及灵活的原语,建立在时间流的大概念之下。

这些原语可用于统一展现通用Cocoa以及泛型编程模式,这些都是观察者的行为基础。例如委派模式、回调闭包、通知、控制动作、响应者链事件、Future/Promise以及K/V的监控。所有的这些不同的机制都使用相同的方法进行呈现,可以很方便的将这些组合在一起,更少的意大利面条式的代码以及状态来弥补其中的缝隙。

示例代码:

// Purchase from the vending machine with a specific option.vendingMachine.purchase    .apply(snackId)    .startWithResult { result        switch result {        case let .success(snack):            print("Snack: \(snack)")        case let .failure(error):            // Out of stock? Insufficient fund?            print("Transaction aborted: \(error)")        }    }// The vending machine.class VendingMachine {    let purchase: Action<Int, Snack, VendingMachineError>    let coins: MutableProperty<Int>    // The vending machine is connected with a sales recorder.    init(_ salesRecorder: SalesRecorder) {        coins = MutableProperty(0)        purchase = Action(state: coins, enabledIf: { $0 > 0 }) { coins, snackId in            return SignalProducer { observer, _ in                // The sales magic happens here.                // Fetch a snack based on its id            }        }        // The sales recorders are notified for any successful sales.        purchase.values.observeValues(salesRecorder.record)    }}

编者注:

函数响应式编程(FunctionalReactiveProgramming:FRP)是一种和事件流有关的编程方式,其角度类似EventSoucing,关注导致状态值改变的行为事件,一系列事件组成了事件流。FRP是更加有效率地处理事件流,而无需显式去管理状态。

具体来说,FRP包括两个核心观点:

事件流,离散事件序列

 

属性properties,代表模型连续的值。

一系列事件是导致属性值发生变化的原因。FRP非常类似于GOF的观察者模式。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论