函数式编程

@interface Calculator : NSObject
- (Calculator *(^)(float))add;
- (Calculator *(^)(float))minus;
- (Calculator *(^)(float))multiply;
- (Calculator *(^)(float))divide;
- (float)result;
@end
@interface Calculator()
@property (nonatomic, assign) double tmp;
@end

@implementation Calculator

- (Calculator *(^)(float))add {
    __weak typeof(self) wself = self;
    Calculator *(^result)(float) = ^(float value) {
        wself.tmp += value;
        return self;
    };
    return result;
}

- (Calculator *(^)(float))minus {
    __weak typeof(self) wself = self;
    Calculator *(^result)(float) = ^(float value){
        wself.tmp -= value;
        return self;
    };
    return result;
}

- (Calculator *(^)(float))multiply {
    __weak typeof(self) wself = self;
    Calculator *(^result)(float) = ^(float value){
        wself.tmp *= value;
        return self;
    };
    return result;
}

- (Calculator *(^)(float))divide {
    __weak typeof(self) wself = self;
    Calculator *(^result)(float) = ^(float value){
        if (value == 0) {
            wself.tmp = 0;
        }else {
            wself.tmp /= value;
        }
        return self;
    };
    return result;
}

- (float)result {
    return self.tmp;
}

@end
Calculator *c = [Calculator new];
double d = c.add(1).add(4).minus(3).multiply(5).divide(0.5).result; //20



iOS
 
  


基础知识

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!



Charles
上一篇

Vim常用命令
下一篇