arkilis
5/9/2017 - 10:24 PM

CalculateChain class

CalculateChain class


//CalculateChain.h
#import <Foundation/Foundation.h>

@interface CalculateChain : NSObject

@property (nonatomic) float result;

@property (readonly, nonatomic, copy) CalculateChain* (^add)(float num);
@property (readonly, nonatomic, copy) CalculateChain* (^minus)(float num);
@property (readonly, nonatomic, copy) CalculateChain* (^multiply)(float num);
@property (readonly, nonatomic, copy) CalculateChain* (^divide)(float num);

@end
  
  
//CalculateChain.m  
#import "CalculateChain.h"

@implementation CalculateChain

- (instancetype)init {
    self = [super init];
    if (!self) {
        return nil;
    }
    self.result = 0;
    return self;
}


-(CalculateChain*(^)(float))add{
    return ^CalculateChain *(float value){
        _result += value;
        return self;
    };
}


-(CalculateChain*(^)(float))minus{
    return ^CalculateChain *(float value){
        _result -= value;
        return self;
    };
}


-(CalculateChain*(^)(float))multiply{
    return ^CalculateChain *(float value){
        _result *= value;
        return self;
    };
}


-(CalculateChain*(^)(float))divide{
    return ^CalculateChain *(float value){
        if(value!=0)
            _result /= value;
            
        return self;
    };
}

@end