链式编程
链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。
在OC
中,可以利用block
实现链式编程。
方法的返回值是
block
,block
必须有返回值(本身对象),block参数(需要操作的值)
定义如下:
- (returnType (^)(parameterTypes)function;
实现:
1 | - (returnType(^)(parameterTypes))function{ |
具体代码参照峥吖的文章《最快让你上手ReactiveCocoa之基础篇》
在此将调用的代码列一下
1 | int result = [NSObject makeCaculators:^(CaculatorMaker *maker) { |
实在是太帅了,刚看到的时候,一脸懵逼,很像js对吧 我们可以用自定义的实例接着做其他事,这样的调用像一条链子一样,一口气做完一个对象想做的所有事都可以。
函数式编程
它属于”结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。
详细说明,参照阮一峰的网络日志-函数式编程初探
12年呀,差距好大
举例来说,现在有这样一个数学表达式:
(1 + 2) * 3 - 4
传统的过程式编程,可能这样写:
var a = 1 + 2;
var b = a * 3;
var c = b - 4;
转换成响应式编程
add(1,2).multiply(3).subtract(4)
在OC
中的实现方法
每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
定义如下:
- ( ClassType )function:(returnType (^)(parameterTypes)parameter;
实现:
1 | - ( ClassType )function1:(returnType (^)(parameterTypes)parameter{ |
调用代码
1 | ClassType class = [ClassType alloc]init]; |
对于函数式编程的思想,还不是太懂,在琢磨当中,借鉴了各位大神的博客,一一拜谢,理解比较浅,有错误的地方还望指正。顺便说一句ReactiveCocoa真NB,不断学习中。