学习

作者: 乡村武装青年 | 来源:发表于2015-12-05 12:56 被阅读70次

函数响应式编程的理解:

程序: 接受输入-经过处理-转换为输出 构成一个程序的生命周期. 一个程序的一个页面可能会接受多次的输入,具体表现在(点击事件,键盘事件,摇晃事件,网络请求事件等等)这些事件被传入到应用程序里面,经过程序的混合处理,产生结果,这就是输出.

输出通常会改变应用的UI。开关状态变化、列表有了新的元素都是UI变化。也有可能让磁盘上某个文件产生变化,或者产生一个API请求,这都是应用的输出。

但不像传统的输入输出设计,应用的输入输出可以产生很多次。应用打开后,不只是一个简单的 输入→工作→输出 就构成了一个生命周期。应用经常有大量的输入并基于这些输入产生输出.

一个简单的列子 注册页面的输入框和注册按钮是否可被点击:

传统写法:


传统范式的样例中,逻辑被放在了很多方法里,零碎地摆放在view controller里,通过到处散布到delegate里的self.createButton.enabled = [self isFormValid];方法在页面的生命周期中被调用。

reactivecocoa 写法:


所有对于判断表单输入是否合法的逻辑都被整合为一串逻辑了。每次不论哪个输入框被修改了,用户的输入都会被reduce成一个布尔值,然后就可以自动来控制注册按钮的可用状态了。

ReactiveCocoa由两大主要部分组成:signals(RACSignal) 和sequences(RACSequence)。

signal 和 sequence 都是streams,他们共享很多相同的方法。ReactiveCocoa在功能上做了语义丰富、一致性强的一致性设计:signal是push驱动的stream,sequence是pull驱动的stream。

RACSignal

异步控制或事件驱动的数据源:Cocoa编程中大多数时候会关注用户事件或应用状态改变产生的响应。

链式以来操作:网络请求是最常见的依赖性样例,前一个对server的请求完成后,下一个请求才能构建。

并行独立动作:独立的数据集要并行处理,随后还要把他们合并成一个最终结果。这在Cocoa中很常见,特别是涉及到同步动作时。

Signal会触发它们的subscriber三种不同类型的事件:

下一个事件从stream中提供一个新值。不像Cocoa集合,它是完全可用的,甚至一个signal可以包含nil。

错误事件会在一个signal结束之前被标示出来这里有一个错误。这种事件可能包含一个NSError对象来标示什么发生了错误。错误必须被特殊处理——错误不会被包含在stream的值里面。

完成事件标示signal成功结束,不会再有新的值会被加入到stream当中。完成事件也必须被单独控制——它不会出现在stream的值里面。

一个signal的生命由很多下一个(next)事件和一个错误(error)或完成(completed)事件组成(后两者不同时出现)。


RACSequence

简化集合转换:你会痛苦地发现Foundation库中没有类似map和filter、fold/reduce等高级函数。

Sequence是一种集合,很像NSArray。但和数组不同的是,一个sequence里的值默认是延迟加载的(只有需要的时候才加载),这样的话如果sequence只有一部分被用到,那么这种机制就会提高性能。像Cocoa的集合类型一样,sequence不接受nil值。

RACSequence允许任意Cocoa集合在统一且显式地进行操作

http://www.jianshu.com/p/87ef6720a096 

相关文章

  • 学习学习学习

    第三天了,连续三天,早上睁眼开始,看视频,做课件,连续作业,直到晚上十二点才睡觉。吃饭不规律,想起来就吃,感觉不饿...

  • 学习学习学习

    23岁的我,才真正明白,什么是学习,什么是努力,努力和不努力真的不同,就好比同样是一篇稿子,我用一周背下来,有的人...

  • 学习学习学习!

    妈妈总是让我学习,我只能用装当办法。 方法一: 方法二: 方法三: 方法四: ...

  • 学习学习学习

    001.今天看财富自由之路看了第二遍,而且看了一半,算是完成任务很开心。中间有想放弃的念头,坚持看完。眼睛痛,一直...

  • 学习学习学习

    马自达为什么坚持高压缩比自吸

  • 学习!学习!学习!

    学习的痛苦是暂时的 没有学到的痛苦是永恒的 因为学习而特别充实的一天 很踏实 ~~~~ 2015.11.28.阴天...

  • 学习!学习!学习!

    无数次想要去逃离,可这封闭的世界根本出不去。你没有什么可以抛弃、只能咬着牙带着面具微笑的活下去。 没有那个人、他也...

  • 学习学习学习!

    昨天和今天两个上午,都在学习新媒体运营,学习的过程中心里只有一个想法:这也太套路,太功利了吧。可真应了那句话...

  • 学习,学习,学习!

    近期学习重点有两个方面,一方面是把上一个阶段定下任务的几本书读完,并在读的过程中有输出和转化,让阅读和学习真正能有...

  • 学习学习学习

    人不学习不长进,能放下自己的身段,以空杯心态去学习,就能有所收获。 今天在群里听大家讨论写作,这个...

网友评论

      本文标题:学习

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