一 方法的實現(xiàn)
#import <Foundation/Foundation.h>
@interface RJBlockTool : NSObject
//計算
+ (CGFloat)makeCalculator:(void(^)(RJBlockTool *rj_tool))block;
typedef RJBlockTool *(^RJCalculator)(CGFloat num);
@property (nonatomic, strong, readonly) RJCalculator plus;//
@property (nonatomic, strong, readonly) RJCalculator subtract;
@property (nonatomic, strong, readonly) RJCalculator multiply;
@property (nonatomic, strong, readonly) RJCalculator divide;
//拼接字符串
+ (NSString *)makeAppendingString:(void(^)(RJBlockTool *rj_tool))block;
@property (nonatomic, strong, readonly) RJBlockTool *(^date)(NSString *str);
@property (nonatomic, strong, readonly) RJBlockTool *(^who)(NSString *str);
@property (nonatomic, strong, readonly) RJBlockTool *(^note)(NSString *str);
@end
#import "RJBlockTool.h"
@interface RJBlockTool()
//1 計算的結(jié)果
@property(nonatomic,assign) CGFloat resultCalculator;
//2 處理后的字符串
@property(nonatomic,strong) NSString *resultString;
@end
@implementation RJBlockTool
/*************************** 計算(加減乘除) *******************************/
+(CGFloat)makeCalculator:(void (^)(RJBlockTool *))block{
if (block) {
RJBlockTool *tool = [[RJBlockTool alloc] init];
block(tool);
return tool.resultCalculator;
}
return 0;
}
-(RJCalculator)plus{
return ^(CGFloat num){
self.resultCalculator += num;
return self;
};
}
-(RJCalculator)subtract{
return ^(CGFloat num){
self.resultCalculator -= num;
return self;
};
}
-(RJCalculator)multiply{
return ^(CGFloat num){
self.resultCalculator *= num;
return self;
};
}
-(RJCalculator)divide{
return ^(CGFloat num){
self.resultCalculator /= num;
return self;
};
}
/*************************** 計算(加減乘除) *******************************/
/*************************** 拼接字符串 *******************************/
+(NSString *)makeAppendingString:(void (^)(RJBlockTool *))block{
if (block) {
RJBlockTool *tool = [[RJBlockTool alloc] init];
tool.resultString = @"date,who一起去看電影,備注:note";
block(tool);
return tool.resultString;
}
return @"為什么你什么都不說?";
}
-(RJBlockTool *(^)(NSString *))date{
return ^(NSString *str){
self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"date" withString:str];
return self;
};
}
-(RJBlockTool *(^)(NSString *))who{
return ^(NSString *str){
self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"who" withString:str];
return self;
};
}
-(RJBlockTool *(^)(NSString *))note{
return ^(NSString *str){
self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"note" withString:str];
return self;
};
}
/*************************** 拼接字符串 *******************************/
@end
二 使用
NSLog(@"計算結(jié)果1-->%f",[RJBlockTool makeCalculator:^(RJBlockTool *rj_tool) {
rj_tool.plus(10).subtract(2).multiply(5).divide(8);
}]);
NSLog(@"計算結(jié)果2-->%f",[RJBlockTool makeCalculator:^(RJBlockTool *rj_tool) {
rj_tool.plus(10);
rj_tool.subtract(2);
rj_tool.multiply(5);
rj_tool.divide(5);
}]);
NSLog(@"計算結(jié)果:-->%@",[RJBlockTool makeAppendingString:^(RJBlockTool *rj_tool) {
rj_tool.date(@"今天").who(@"我和她").note(@"嘿嘿嘿");
}]);
計算結(jié)果1-->5.000000
計算結(jié)果2-->8.000000
計算結(jié)果:-->今天,我和她一起去看電影,備注:嘿嘿嘿
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者