美文网首页
函数响应式编程思想

函数响应式编程思想

作者: Ldies | 来源:发表于2019-07-22 17:02 被阅读0次

函数响应式编程思想

15637776205665.jpg

函数响应式编程是种编程范式。它是通过构建函数操作数据序列,然后对这些序列做出响应的编程方式。它结合了函数式编程以及响应式编程

函数式编程

函数式编程是种编程范式,它需要我们将函数作为参数传递,或者作为返回值返还。我们可以通过组合不同的函数来得到想要的结果。

我们来看一下这几个例子:

// 公会所有角色
let allProfessional: [Role] = getTheGuildGuys()

// 亡灵种族的盗贼角色
let undeadTheThieves: [Role] = allProfessional
    .filter { role in role.race == "Undead" && role.professional == "Thife" }

我们把判定函数作为参数传递给 filter 方法,从而选取xx公会中种族为亡灵的盗贼职业。

undeadTheThieves.filter { (role) -> Bool in
    role.weapon == "DD"
    }.forEach { (role) in
        role.dotask(name: "ag门口照相")
}

我们再把判断武器为DD的判断函数给 filter 方法,这样我们就能找到武器为DD的亡灵盗贼,然后将任务函数传递给 forEach 方法,于是这些符合要求的亡灵盗贼就被派去ag门口照相了。

    undeadTheThieves.filter { (role) -> Bool 
    role.GS > 3000}
    .map { (role) -> Player in
        role.player
    }.forEach { (player) in
        player.receiveAPrize()
}

我们还可以找到GS>3000的角色,然后用map方法将他们转为游戏玩家,并且让这些符合条件的游戏玩家获取1个礼物。

整体结构

15637835097664.jpg

这就是函数式编程,它使我们可以通过组合不同的方法,以及不同的函数来获取目标结果。你可以想象如果我们用传统的 for 循环来完成相同的逻辑,那将会是一件多么繁琐的事情。所以函数试编程的优点是显而易见的:

灵活
高复用
简洁
易维护
适应各种需求变化

函数式编程 -> 函数响应式编程

现在大家已经了解我们是如何运用函数式编程来操作序列的。其实我们可以把这种操作序列的方式再升华一下。例如,你可以把一个按钮的点击事件看作是一个序列:


image
// 假设用户在进入页面到离开页面期间,总共点击按钮 3 次

// 按钮点击序列
let taps: Array<Void> = [(), (), ()]

// 每次点击后弹出提示框
taps.forEach { showAlert() }

这样处理点击事件是非常理想的,但是问题是这个序列里面的元素(点击事件)是异步产生的,传统序列是无法描叙这种元素异步产生的情况。为了解决这个问题,于是就产生了可监听序列Observable<Element>。它也是一个序列,只不过这个序列里面的元素可以是同步产生的,也可以是异步产生的:

image
// 按钮点击序列
let taps: Observable<Void> = button.rx.tap.asObservable()

// 每次点击后弹出提示框
taps.subscribe(onNext: { showAlert() })

这里 taps 就是按钮点击事件的序列。然后我们通过弹出提示框,来对每一次点击事件做出响应。这种编程方式叫做响应式编程。我们结合函数式编程以及响应式编程就得到了函数响应式编程:

image
passwordOutlet.rx.text.orEmpty
    .map { $0.characters.count >= minimalPasswordLength }
    .bind(to: passwordValidOutlet.rx.isHidden)
    .disposed(by: disposeBag)

我们通过不同的构建函数,来创建所需要的数据序列。最后通过适当的方式来响应这个序列。这就是函数响应式编程

相关文章

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • 函数响应式编程思想 & RxSwift 核心逻辑(一)

    函数响应式编程思想 函数响应式编程思想即是将函数式编程和响应式编程相结合。 函数式编程 顾名思义,就是像函数一样的...

  • 函数响应式编程思想

    函数响应式编程思想 函数响应式编程是种编程范式。它是通过构建函数操作数据序列,然后对这些序列做出响应的编程方式。它...

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

  • 基本概念

    1:FRP 函数响应式编程 找到一篇写的很好的文章函数响应式编程(FRP)思想理解是一步是一步,利用函数调用函数。...

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • 函数响应式编程思想 & RxSwift 核心逻辑

    函数响应式编程 = 函数式编程 + 响应式编程 一、函数式 一种编程范式,如y=f(x),y=f(f(x))(高阶...

  • Rxswift(一)函数响应式编程思想

    @TOC 1. 函数响应式编程思想必备基本概念简介 函数式编程 在计算机科学里,函数式编程是一种编程范式,它将计算...

  • 函数响应式编程

    # 函数响应式编程 开始之前了解一下什么是函数响应式编程? 函数响应式编程是种编程范式。它是通过构建函数操作数据序...

  • iOS ReactiveCocoa学习

    简介 ReactiveCocoa是github开源的一个第三方框架,响应式编程的代表。通过函数式响应式编程的思想,...

网友评论

      本文标题:函数响应式编程思想

      本文链接:https://www.haomeiwen.com/subject/bniwlctx.html