美文网首页
RxSwift (5)高阶函数

RxSwift (5)高阶函数

作者: 忆痕无殇 | 来源:发表于2019-07-31 18:35 被阅读0次
定义

*在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:
*接受一个或多个函数作为输入
*输出一个函数

RxSwift高阶函数的理解

1:map函数:可以对数组中的每一个元素做一次处理

    public func map<R>(_ transform: @escaping (E) throws -> R)
        -> Observable<R> {
        return self.asObservable().composeMap(transform)
    }

map函数通过observable对象查找composeMap函数

 /// Optimizations for map operator
    internal func composeMap<R>(_ transform: @escaping (Element) throws -> R) -> Observable<R> {
        return _map(source: self, transform: transform)
    }

继续来到_map函数

internal func _map<Element, R>(source: Observable<Element>, transform: @escaping (Element) throws -> R) -> Observable<R> {
    return Map(source: source, transform: transform)
}

找到Map类的定义

final private class Map<SourceType, ResultType>: Producer<ResultType>

通过Producer核心逻辑通过subscribe函数和run函数对每个数组中的元素进行处理。
2:map和flatMap的不同之处
(1)flatMap返回后的数组中不存在nil,同时它会把Optional解包
(2)flatMap还能把数组中存有数组的数组(二维数组、N维数组)一同打开变成一个新的数组
(3)flatMap也能把两个不同的数组合并成一个数组,这个合并的数组元素个数是前面两个数组元素个数的乘积

 public func flatMap<O: ObservableConvertibleType>(_ selector: @escaping (E) throws -> O)
        -> Observable<O.E> {
            return FlatMap(source: self.asObservable(), selector: selector)
    }

继续来到FlatMap函数

final private class FlatMap<SourceElement, SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.E> 

还是找到Producer核心逻辑。

相关文章

  • RxSwift(四)-- RxSwift几个常用高阶函数介绍

    对于RxSwift的重点学习,我们还得需要知道RxSwift的高阶函数,掌握好了RxSwift的高阶函数,是你通往...

  • RxSwift (5)高阶函数

    定义 *在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:*接受一个或多个函数作为输入*输出一个函数 R...

  • RxSwift 深入浅出(二)高阶函数

    RxSwift 这个框架看我就够了,这一篇我重点介绍高阶函数,掌握好RxSwift的高阶函数,是你通往成功的捷径。...

  • RxSwift<5>—— 高阶函数(上)

    从可观察对象的错误通知中恢复的操作符catchErrorJustReturn 从错误事件中恢复,方法是返回一个可观...

  • RxSwift学习--高阶函数 / 操作符(上)

    前言 在RxSwift中,高阶函数也可以成为操作符,高阶函数可以帮助我们创建新的序列,或者变化组合原有的序列,从而...

  • RxSwift + MVVM 项目实战

    RxSwift 是什么? 为什么要引入它?它有什么优点、好处呢? 函数式编程:利用高阶函数,即将函数作为其它函数的...

  • RxSwift高阶函数skip解读

    RxSwift高阶函数skip解读 skip skip的作用:跳过 Observable 中头 n 个元素,只关注...

  • RxSwift #04 | Operators

    Overview RxSwift 提供了多种操作符(Operator),如果你了解 Swift 的高阶函数,比如 ...

  • RxSwift(二)

    一、常用的RxSwift高阶函数 1、just 2、drive 3、combineLatest 序列组合 4、ma...

  • RxSwift(四)高阶函数

    @TOC 我们知道Swift中有很多高阶函数,非常好用,而且效率都很高,如我们经常使用的map,fliter,fl...

网友评论

      本文标题:RxSwift (5)高阶函数

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