block 作为 返回值 使用 -- 模仿Masonry链式编程

一直都觉得使用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;
    };
}

你可能感兴趣的:(block 作为 返回值 使用 -- 模仿Masonry链式编程)