iOS 函数式(链式)编程
https://www.cnblogs.com/chzheng/p/5949376.html
函数式编程概念
- 函数式编程是种编程范式
- 函数式编程
Functional Programming
,简写FP
- 使用特点,将局部小的逻辑计算封装为一个个小的函数体,在实际应用中将这些小的函数体
自由组合
- 可以接受函数当作输入(参数)和输出(返回值)
- 函数式编程的基础是
block
/闭包
- 函数式编程的代表作品:
Masnory
/SnapKit
make.centerY.equalTo(self.view).offset(100);
函数式编程体验
基本方法调用
- 定义 Person 类
@interface Person : NSObject
- (void)eat;
- (void)run;
@end
@implementation Person
- (void)eat {
NSLog(@"吃");
}
- (void)run {
NSLog(@"跑");
}
@end
- 调用方法
Person *p = [[Person alloc] init];
[p run];
[p eat];
- 存在问题,每个方法要分别调用,不能组合调用
改进一 —— 添加方法的返回值
- (Person *)eat1 {
NSLog(@"吃1");
return self;
}
- (Person *)run1 {
NSLog(@"跑1");
return self;
}
- 方法调用
[[person eat1] run1];
- 改进点
- 可以在一个方法的基础上继续调用后续的方法
- 方法调用顺序更加灵活
改进二 —— 将返回值修改为 block,以函数的形式调用
- (Person * _Nonnull (^)())eat2 {
Person * (^myEatBlock)() = ^ Person * () {
NSLog(@"吃2");
return self;
};
return myEatBlock;
}
- (Person * _Nonnull (^)())run2 {
return ^ Person * {
NSLog(@"跑2");
return self;
};
}
- 执行函数
person.eat2().run2();
person.run2().eat2();
改进三 —— 增加函数参数
- (Person * _Nonnull (^)(NSString * _Nonnull))eat3 {
return ^ Person * (NSString * food) {
NSLog(@"吃 %@", food);
return self;
};
}
- (Person * _Nonnull (^)(float))run3 {
return ^ Person * (float distance) {
NSLog(@"跑了 %f 米", distance);
return self;
};
}
- 执行函数
p.run3(100).eat3(@"food");
简单的实际运用可以参考 我的这篇文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-10-06 Android 穿山甲广告联盟接入
2020-10-06 Mac OS 下使用 afconvert 命令,处理音频格式转换
2020-10-06 IOS 监听锁屏