是把操作尽量写成一系列嵌套的函数或者方法调用。
-
函数式编程特点
:每个方法必须有返回值(本身对象),把函数或者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);