partial函数的使用(柯里化)
Posted 安之ccy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了partial函数的使用(柯里化)相关的知识,希望对你有一定的参考价值。
有时,我们希望固定函数中的某些参数,类似默认参数那样,但是partial可以很方便地去创建出多个带有“默认参数”的函数,并且是按从左到右的顺序给参数赋予固定值的
就像如下代码写的那样——这里myPartial是简单实现版的partial方法,大牛解释文章在这里 和 这里
我创建了res变量,将sayIt函数的前两个参数固定为'Hello', 'Ellie'
,之后我向res变量传入第三个变量str3,就能得到'Hello, Ellie,' + str3
,即:
- 如果我传入’good morning’,就能得到Hello, Ellie, good morning;这与执行sayIt(‘Hello’, ‘Ellie’,‘good morning’)的效果是一样的
- 如果我传入’good afternoon’,就能得到Hello, Ellie, good afternoon;
- 如果我传入’good evening’,就能得到Hello, Ellie, good evening。
然后我另外创建了一个变量res1,固定sayIt函数的前两个参数为'hi','siri'
,然后我传入第三个参数,得到:hi, siri, welcome back home
function myPartial(fn, str1, str2) {
let result = (str3) => {
return (fn(str1, str2, str3))
}
return result;
}
var sayIt = function (greeting, name, sentence) {
return greeting + ', ' + name + ', '+sentence;
};
let res = myPartial(sayIt, 'Hello', 'Ellie')
console.log(res('good morning')); // Hello, Ellie, good morning
console.log(sayIt('Hello', 'Ellie','good morning')); // Hello, Ellie, good morning
console.log(res('good afternoon')); // Hello, Ellie, good afternoon
console.log(res('good evening')); // Hello, Ellie, good evening
let res1 = myPartial(sayIt,'hi','siri');
console.log(res1('welcome back home')); // hi, siri, welcome back home
以上是关于partial函数的使用(柯里化)的主要内容,如果未能解决你的问题,请参考以下文章