计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
编程漫谈
### 高阶函数 封装行为+ ### 闭包 基于数学的**闭包性质**,可以从极简单的原子元素出发,通过反复应用封闭运算,生成无限复杂、自相似、甚至具有分形特征的结构。以下是几个不同层次的展示。 在工程实践中,闭包的应用远不止计数器,它解决的是**状态封装、延迟计算、依赖注入、资源管理**等实际问题。以下是工程中真正复杂且有价值的应用: # ref | 抽象层次 | 典型机制 / 概念 | 边界外可见(对外承诺) | 边界内隐藏(可变实现) | 典型例子 | |---|---|---|---|---| | **抽象边界总原则** | 契约、API、不变量 | 输入 / 输出、约束、错误、行为保证 | 数据结构、算法、存储、协议、调度 | “改实现不改调用方” | | **函数抽象** | 一等函数、匿名函数、闭包(函数 + 捕获环境)、高阶函数/高阶过程、柯里化、部分应用、递归、惰性求值 | “要做什么”、函数签名、组合方式 | 上下文捕获、执行顺序、求值时机、控制流组织 | `map / filter / reduce`、回调 | | **数据抽象** | ADT(抽象数据类型)、封装、类、结构体/记录、多态 | 操作集合、可观察行为、不变量 | 表示方式、内存布局、内部字段 | `Stack` / `Queue` / `Tree` | | **类型抽象** | 泛型、接口、trait / protocol、type class、多态 | 需要满足的能力 / 约束 | 具体类型、具体实现 | `sort<T>`、`Repository<T>` | | **模块抽象** | 模块、包、命名空间、依赖注入 | 公共 API、依赖契约 | 内部组织、实现细节、内部依赖 | `auth` 模块、`service/repository` | | **控制流抽象** | 迭代器、生成器、回调、Promise / Future、协程、continuation(续延) | 结果、顺序、时机、状态转换 | 循环、调度、异步细节、线程切换 | `async/await`、事件驱动 | | **语法抽象** | 宏、模板、DSL、代码生成 | 领域表达、声明式写法 | 样板代码、重复语法、机械转换 | SQL 风格 DSL、注解 | | **副作用抽象** | monad、effect system(效果系统)、IO 抽象 | 副作用边界、效果类型 | 状态、文件 / 网络 IO、异常、并发 | Haskell `IO`、effect handler | | **边界好坏判断** | 过浅 / 过深 / 刚好 | 外部只需最小信息 | 内部变化能否隔离 | 改内部不改外部即较好 |
peipeo
2026年5月12日 09:10
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码