iOS函数式编程

是把操作尽量写成一系列嵌套的函数或者方法调用。

  • 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)

  • 代表:ReactiveCocoa。

  • 用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.

@interface Caculator : NSObject

 

@property (nonatomic, assign) int          result;

@property (nonatomic, assign) BOOL         isEqule;

 

- (Caculator *)caculator:(int (^)(int value))block;// 内部触发block,外部执行block,并得到结果;

- (Caculator *)equle:(BOOL (^)(int result))block;// 内部触发block,外部执行block,并得到结果;

@end

 

@implementation Caculator

 

- (instancetype)init

{

    if (self = [super init]) {

        self.result = 1;

        self.isEqule = NO;

    }

    return self;

}

 

- (Caculator *)caculator:(int (^)(int value))block

{

    _result = block(_result);

    NSLog(@"%d",_result);

    return self;

}

- (Caculator *)equle:(BOOL (^)(int result))block

{

    _isEqule = block(_result);

    NSLog(@"%d",_isEqule);

    return self;

}

// 调用

 

 Caculator *ca = [[Caculator alloc] init];

    BOOL isEqule = [[[ca caculator:^int(int value) {// 调用方法,会执行block,将结果给回去,

        value += 2;

        value *= 5;

        return value;

    }] equle:^BOOL(int result) {// 调用方法,会执行block,将结果给回去,

        return (result == 15);

    }] isEqule];// 调用getter方法,获取最终的执行结果

    

    NSLog(@"%d",isEqule);

 

原文地址:https://www.cnblogs.com/dengchaojie/p/7879057.html