iOS

iOS 函数编程 & 链式编程

2016-11-02  本文已影响21人  NieFeng1024

函数式(链式)编程

函数式编程概念

make.centerY.equalTo(self.view).offset(100);

函数式编程体验

基本方法调用

@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");
1.png 2.png 3.png 4.png

https://github.com/550872569/550872569-FuncTypeCode.git

上一篇下一篇

猜你喜欢

热点阅读