OC 函数式编程 (非原创 为了方便查找 所以设置为原创)
来源:互联网 发布:云创客淘宝采集软件 编辑:程序博客网 时间:2024/05/16 05:16
#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);
- OC 函数式编程 (非原创 为了方便查找 所以设置为原创)
- 为ArrayCollection设置多个筛选函数(非原创)
- [原创]JavaScript与函数式编程
- [原创]为CEdit设置背景图片
- 非原创
- 范型编程系列二(非原创)
- c++ 拷贝构造函数(非原创)
- 网站优化,不要为了原创而原创!
- Object-C(OC)内存管理机制详解 (非原创)
- Linux命令(非原创)
- (非原创)笑话
- Maven概述(非原创)
- 日历代码,非原创
- 天气预报-非原创
- 非原创:最大公约数问题
- 【非原创】PHPMywind调用
- 非原创的文章
- POJ 1700非原创
- 牛客网编程-不用加减乘除做加法(java)
- Drupal7 API 全局变量
- RabbitMQ指南(中)
- android Modbus-RTU
- java之路,学无止境,第七天核心知识
- OC 函数式编程 (非原创 为了方便查找 所以设置为原创)
- 双色球
- RabbitMQ指南(下)
- Angularjs 算法//姓名//自定义标签
- java中怎么执行sql语句
- 小米智能音箱能否成下一个小米手机?
- 快速排序(Quicktsort)之Java实现
- 消息中间件收录集
- 运行go get 指令 提示unrecognized import path