javascript - JavaScript 中的 Thunk 和 currying 有什么区别?
问题描述
对于柯里化,如果我们有这样的函数:
function multiply(x, y){
return x * y;
}
multiply(3, 5); // 15
那么它的柯里化版本是:
function curriedMultiply(x) {
return function(y) {
return x * y;
}
}
curriedMultiply(3)(5); // 15
对于 Thunk,如果我们有这样的函数(在 Nodejs 中):
let fs = require('fs')
fs.readFile(fileName,callback)
那么它的 Thunk 版本是:
let thunkify = require('thunkify')
let read = thunkify(fs.readFile)
read(fileName)(callback)
看起来thunk和currying有关?它们都将多参数函数变成了单参数函数。而这个单参数函数将返回另一个函数,该函数采用原始的第二个参数,然后返回最终结果。但是我注意 thunk 只将回调作为第二个参数,而对于 currying,accepeted 参数的类型没有限制。
那么,thunk 是柯里化的特例之一吗?
解决方案
推荐阅读
- audiokit - AppleSequencer 导出 m4a 格式文件错误 使用 Audiokit 时?
- git - 什么是散列在:git hash-object abc.txt?
- validation - Kotlin 中的 Javax 验证自定义枚举约束
- java - 反应堆代码 SwithIfEmpty 和 Mono 在 Java 中没有按预期工作
- matlab - 在matlab中更改线条透明度
- graphql - Github Graphql API 创建仓库
- html - 自定义选择框
- r - 闪亮的文档:如何居中对齐 RenderPlot 的输出
- c# - 如何使用 Math.DivRem() 获得双精度值?
- javascript - 反应原生 | npm 依赖项如何影响 AAB(Android App Bundle)版本大小