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函数的使用(柯里化)的主要内容,如果未能解决你的问题,请参考以下文章

partial函数的使用(柯里化)

函数柯里化

Swift 柯里化

柯里化与反柯里化

什么是函数柯里化

带你看懂javascript函数柯里化(currying)