一直都觉得使用Masonry的时候,语法很特别,今天来尝试下怎么实现
关于block在这里就不赘述,直接上代码
- (void)cacultor {
YLCacultorManager *calcu = [[YLCacultorManager alloc]init];
calcu.add(5).add(10).subduction(2).multiplication(2).division(4);
NSLog(@"%.2lf",calcu.result);
}
模仿 Masonry链式编程的简单计算器
YLCacultorManager.h
@property (nonatomic, assign, readonly) CGFloat result;
/**
* 加法
*/
- (YLCacultorManager * (^)(CGFloat))add;
/**
* 减法
*/
- (YLCacultorManager * (^)(CGFloat))subduction;
/**
* 乘法
*/
- (YLCacultorManager * (^)(CGFloat))multiplication;
/**
* 除法
*/
- (YLCacultorManager * (^)(CGFloat))division;
YLCacultorManager.m
- (YLCacultorManager * (^)(CGFloat))add {
return ^(CGFloat value){
_result += value;
return self;
};
}
- (YLCacultorManager * (^)(CGFloat))subduction {
return ^(CGFloat value){
_result -= value;
return self;
};
}
- (YLCacultorManager * (^)(CGFloat))multiplication {
return ^(CGFloat value){
_result *= value;
return self;
};
}
- (YLCacultorManager * (^)(CGFloat))division {
return ^(CGFloat value){
_result /= value;
return self;
};
}