zoukankan      html  css  js  c++  java
  • iOS-RAC学习笔记(一)——RACStream

    RACStream是RACSignal和RACSequence的父类,定义了一些流的操作方法。从名字上可以看出来,这个对象就像流一样可以往任何一个出口流,同时也可以给这个流设计一道道关卡,改变流(这里的改变,既包括流的内容,也包括融合,也包括流的筛选等等)。
     
    1. RACStream简介
     
    (a)RACStream类中提供两个类方法,+empty 和 +return,第一个是创建一个空的流对象;第二个是创建一个基于方法参数值的一个流。
     
    (b)RACStream类中提供了几个最基本的改变流的方法,-bind,-concat和-zipWith(之后会在RACSignal中对这些进行详细讲解)。第一个方法,是只改变当前流对象的方法;第二个方法是在当前响应流已经完成后,紧接着注入新的响应流;第三个方法,是将不同的流进行打包合成一个流。
     
    (c)在实现了最基本的改变流的方法之后,基于这些改变方法而形成很多更好更方便的改变方法也就出来了,这些方法也都是在RACStream(Operation)这个扩展中。
     
    2. RACStream(Operation)介绍
     
    (a)flattenMap:在bind基础上封装的改变方法,用自己提供的block,改变当前流,变成block返回的流对象。
     
    (b)flatten:在flattenMap基础封装的改变方法,如果当前反应流中的对象也是一个流的话,就可以将当前流变成当前流中的流对象
     
    (c)map:在flattenMap基础上封装的改变方法,在flattenMap中的block中返回的值必须也是流对象,而map则不需要,它是将流中的对象执行block后,用流的return方法将值变成流对象。
     
    (d)mapReplace:在map的基础上封装的改变方法,直接替换当前流中的对象,形成一个新的对象流。
     
    (e)filter:在Map基础上封装的改变封装,过滤掉当前流中不符合要求的对象,将之变为空流
     
    (f)ignore:在filter基础封装的改变方法,忽略和当前值一样的对象,将之变为空流
     
    (g)skip:在bind基础上封装的改变方法,忽略当前流前n次的对象值,将之变为空流
     
    (h)take:在bind基础上封装的改变方法,只区当前流中的前n次对象值,之后将流变为空(不是空流)。
     
    (i)distinctUntilChanged:在bind基础封装的改变方法,当流中后一次的值和前一次的值不同的时候,才会返回当前值的流,否则返回空流(第一次默认被忽略)
     
    (j)takeUntilBlock:在bind基础封装的改变方法,取当前流的对象值,直到当前值满足提供的block,就会将当前流变为空(不是空流)
     
    (k)takeWhileBlock:在bind基础封装的改变方法,取当前流的对象值,直到当前值不满足提供的block,就会将当前流变为空(不是空流)
     
    (l)skipUntilBlock:在bind基础封装的改变方法,忽略当前流的对象值(变为空流),直到当前值满足提供的block。
     
    (m)skipWhileBlock:在bind基础封装的改变方法,忽略当前流的对象值(变为空流),直到当前值不满足提供的block
     
    (n)scanWithStart:reduceWithIndex:在bind基础封装的改变方法,用同样的block执行每次流中的值,并将结果用于后一次执行当中,每次都把block执行后的值变成新的流中的对象。
     
    (o)startWIth:在contact基础上封装的多流之间的顺序方法,在当前流的值流出之前,加入一个初始值
     
    (p)zip:打包多流,将多个流中的值包装成一个RACTuple对象
     
    (q)reduceEach:将流中的RACTuple对象进行过滤,返回特定的衍生出的一个值对象
     
    3. RACStream子类策略
     
    RACStream是RACSignal和RACSequence的父类,但是,RACSignal和RACSequence都自己实现了一套bind,zipWith和contât方法,所以在不同的子类中,RACStream中定义的各种操作对应到各种子类,就会有不同的涵义。 
     
    http://blog.csdn.net/chenyin10011991/article/details/51971388
  • 相关阅读:
    Pull Request
    选择器
    常见HTTP状态码
    286. Walls and Gates
    200. Number of Islands
    1. Two Sum
    名片管理系统(python实现)
    k近邻算法(简单版)
    基数排序
    递归算法的调试
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8588914.html
Copyright © 2011-2022 走看看