OC 函数式编程 (非原创 为了方便查找 所以设置为原创)

1. 函数式编程
#import "Person.h"

@implementation Person
#pragma mark - 链式编程 -
-(Person *)eat{
    
    NSLog(@"吃");
    
    return self;
}

-(Person *)drink{
    
    NSLog(@"喝");
    
    return self;
}

#pragma mark - 函数式编程 -
-(Person *(^)())eat1{
    
    Person * (^block)()=^{
        
        NSLog(@"吃1");
        
        return self;
    };
    
    return block;
}
//简便式写法
-(Person *(^)())drink1{
    
    return ^(){
        
        NSLog(@"喝1");
        
        return self;
    };
}

#pragma mark - 带有参数的函数式编程 -
-(Person *(^)(NSString *))eat2{
    
    Person * (^block)(NSString * food) = ^(NSString * food){
        
        NSLog(@"吃%@",food);
      
        return self;
    };
    
    return block;
}

//简便写法
-(Person *(^)(NSString *))drink2{
    
    return ^(NSString * drinkSth){
        
        NSLog(@"喝%@",drinkSth);
        
        return self;
    };

}

@end

 

调用 Person * person = [[Person alloc]init];
person.eat2(@"包子").drink2(@"水");

 

 

2.函数式编程

#import <Foundation/Foundation.h>

#import "CalculateManager.h"

@interface CalculateManager : NSObject

/** 用来存放相加的结果 */
@property (nonatomic, assign) NSInteger result;

//返回值为一个CalculateManager *(^)(NSInteger)类型的block
- (CalculateManager *(^)(NSInteger))add;

+ (NSInteger)why_makeCalculate: (void(^)(CalculateManager *))block;

@end

@implementation CalculateManager

- (CalculateManager *(^)(NSInteger))add {
    
    return  ^(NSInteger value) {
        _result += value;
        return self;
    };
}

+ (NSInteger)why_makeCalculate:(void(^)(CalculateManager *))block {
    
    CalculateManager *manager = [[CalculateManager alloc] init];
    block(manager);
    return manager.result;

@end
 

 

调用
    
    NSInteger value = [NSObject why_makeCalculate:^(CalculateManager *manager) {
        manager.add(5).add(5).add(5).add(10);
    }];
    
    NSLog(@"%zd", value);

 


// - 防止循环引用 防止在代码块中 weakSelf 为nil
 __weak typeof(self) weakSelf = self;
    self.block = ^{
        __strong typeof(self) strongSelf = weakSelf;
        [strongSelf copy];
    };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值