链式编程、函数式编程、响应式编程

链式编程思想:  

是将多个操作通过点号(.)链接在一起成为一句代码,使代码可读性好。
链式编程的特点:方法的返回值是block,block必须有返回值(对象本身),block里可以有参数(需要操作的值)。方法的返回值必须是方法的调用者。
代表作: masonry框架

// 核心功能

//.h

@interface sumManager : NSObject

//计算结果
@property(assign,nonatomic)int result;

// 返回对象本身,可以连续调用本对象里边的方法
-(sumManager * (^)(int value))add;

@end

//.m
-(sumManager *(^)(int value))add
{
    return ^(int value){
        _result += value;
        return self;
    };
}

// 写一个NSObject的分类,方便调用
@implementation NSObject (sum)
+(int)makeConstraints:(void(^)(sumManager *))blocker
{
    sumManager *mgr = [[sumManager alloc]init];
    blocker(mgr);
    return  mgr.result;
}

// VC 里边调用
   int result =  [NSString makeConstraints:^(sumManager * mgr) {
        mgr.add(100).add(100).add(200);
    }];
    NSLog(@"%d",result);

 

函数式编程:

将操作尽可能写在一起的嵌套函数

本质:就是往方法里边传入block,方法中嵌套Block的调用。

// 计算核心
@implementation SumManager

-(instancetype)manager:(int (^)(int))sumBlock
{
    _result =  sumBlock(_result);
    return  self;  
}

@end


// 调用
   SumManager *mgr = [[SumManager alloc]init];
   int result =  [[mgr manager:^int(int result) {
        result += 10;
        result *= 2;
        return result;
    }]result];
    NSLog(@"%d",result);

响应式编程

是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

例如,在命令式编程环境中,a:=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。电子表格程序就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化。

响应式编程最初是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,但它本质上是一种通用的编程范式。

一版依赖 RAC、KVO、Notification 等实现
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值