博客> 函数式(链式)编程
函数式(链式)编程
2017-08-23 11:57 评论:0 阅读:152 SL勿忘
ios FP

函数式编程概念

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

函数式编程体验

基本方法调用

定义 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");

收藏
0
sina weixin mail 回到顶部