函数式(链式)编程

函数式编程概念

  • 函数式编程是种编程范式
  • 函数式编程 Functional Programming,简写 FP
  • 使用特点,将局部小的逻辑计算封装为一个个小的函数体,在实际应用中将这些小的函数体 自由组合
  • 可以接受函数当作输入(参数)和输出(返回值)
  • 函数式编程的基础是 block闭包
  • 函数式编程的代表作品:Masnory / SnapKit
make.centerY.equalTo(self.view).offset(100); 

函数式编程体验

基本方法调用

  • 定义 Person 类
@interface Person : NSObject

- (void)eat; - (void)run; @end @implementation Person - (void)eat { NSLog(@"吃"); } - (void)run { NSLog(@"跑"); } @end 
  • 调用方法
Person *p = [[Person alloc] init];
[p run];
[p eat];
  • 存在问题,每个方法要分别调用,不能组合调用

改进一 —— 添加方法的返回值

- (Person *)eat1 {
    NSLog(@"吃1");
    return self;
}

- (Person *)run1 {
    NSLog(@"跑1"); return self; } 
  • 方法调用
[[person eat1] run1];
  • 改进点
    • 可以在一个方法的基础上继续调用后续的方法
    • 方法调用顺序更加灵活

改进二 —— 将返回值修改为 block,以函数的形式调用

- (Person * _Nonnull (^)())eat2 {

    Person * (^myEatBlock)() = ^ Person * () {
        NSLog(@"吃2");

        return self;
    };

    return myEatBlock; } - (Person * _Nonnull (^)())run2 { return ^ Person * { NSLog(@"跑2"); return self; }; } 
  • 执行函数
person.eat2().run2();
person.run2().eat2();

改进三 —— 增加函数参数

- (Person * _Nonnull (^)(NSString * _Nonnull))eat3 {
    return ^ Person * (NSString * food) {
        NSLog(@"吃 %@", food); return self; }; } - (Person * _Nonnull (^)(float))run3 { return ^ Person * (float distance) { NSLog(@"跑了 %f 米", distance); return self; }; } 
  • 执行函数
p.run3(100).eat3(@"food");

简单的实际运用可以参考 我的这篇文章

转载于:https://www.cnblogs.com/chzheng/p/5949376.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值