加载中...
部分应用是函数式编程中的一种技术,指预先固定一个函数的部分参数,生成一个接受剩余参数的新函数。它便于从通用函数派生出更专门化的函数,常与柯里化一同出现但概念不同。

| 类型 | 函数式编程技术 |
| 核心操作 | 固定部分参数 |
| 相关概念 | 柯里化、高阶函数 |
| 常见工具 | bind、functools.partial |
部分应用(Partial Application)是指给一个多参数函数预先绑定其中的一部分参数,从而得到一个参数更少的新函数;调用新函数时只需补齐剩余参数即可完成计算。
部分应用的核心价值在于从一个通用函数派生出专门化的版本。例如有一个通用的加法函数 add(a, b),固定第一个参数为 10,就得到一个专门的 add10 函数,以后只需传入另一个加数即可。这在需要反复使用某组固定参数时非常方便。
许多语言和库提供专门的工具来实现部分应用,例如 JavaScript 中函数对象的 bind 方法可以绑定 this 与前若干参数,Python 标准库的 functools.partial 也能生成部分应用后的可调用对象。
部分应用与柯里化常被相提并论,但两者不同。柯里化是把函数彻底转换为一系列单参数函数的链条;部分应用只是固定一部分参数、返回接收其余参数的新函数,并不要求一次只处理一个参数。对一个已柯里化的函数逐步传参,本质上就是连续的部分应用。
问:部分应用和默认参数有什么不同?答:默认参数是在函数定义时为参数设定的兜底值,调用时可省略;部分应用是在调用侧动态地固定参数、生成新函数,更加灵活且可在运行时决定。
问:什么时候适合用部分应用?答:当多次调用同一函数且部分参数保持不变时,用部分应用固定这些参数能让代码更简洁,也便于把配置好的函数作为回调传递。

| 类型 | 函数式编程技术 |
| 核心操作 | 固定部分参数 |
| 相关概念 | 柯里化、高阶函数 |
| 常见工具 | bind、functools.partial |
登录 后参与讨论
暂无讨论,来发表第一条评论吧