美文网首页
大声告诉我什么是柯里化函数

大声告诉我什么是柯里化函数

作者: 小m_up | 来源:发表于2017-05-26 19:52 被阅读170次

第一次认识这个词,在我学习react-redux的时候,碰到了middlewere以及其函数const middlewere = store=>next=>action {...},刚开始我真的是一脸懵逼,这是个啥?

仔细一看才发现,这不是ES6的箭头函数嘛,就是换了个衣服,我就不认识了,实在是惭愧

那么就先来给它穿衣服吧!
箭头函数中如果只是返回一条语句的话我们可以将{}return值省略,例如:

(a)=>{
      return a;
}

///可以简写成
(a)=>a;

那么同理得出store=>next=>action {...}函数为:

const middlewere = (store)=>{
                       return (next)=>{
                                     return (action)=>{ ... }
                              }
                    }

这样是不是就认识了呢?那么这和柯里化函数有什么关系呢?憋着急,慢慢往下看

柯里化函数

柯里化函数概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
什么意思呢,举个栗子就知道了哇

const concat3Words =  (a, b, c) => {
    return a+b+c;
};

const concat3WordsCurrying = (a) => {
    return (b) => {
        return (c) => {
            return a+b+c;
        };
    };
};

console.log(concat3Words("a","b","c"));  //abc
console.log(concat3WordsCurrying("a")("b")("c"));  //abc

concat3WordsCurrying每次调用都返回一个新的函数,该函数接受另一个调用,然后又返回一个新的函数,直至最后返回结果,分布求解,层层递进,这就是柯里化函数,是不是和上面的middlewere有点像呢,对滴,middlewere就是个柯里化函数

柯里化的基础
  • 函数可以作为参数传递
  • 函数能够作为函数的返回值
  • 闭包
柯里化的作用
  • 延迟执行:不断的柯里化,累积传入的参数,最后执行。
  • 参数复用:当在多次调用同一个函数,并且传递的参数绝大多数是相同的,那么该函数就可以使用柯里化

欢迎指出问题和提出建议哦

相关文章

  • 大声告诉我什么是柯里化函数

    第一次认识这个词,在我学习react-redux的时候,碰到了middlewere以及其函数const middl...

  • JS函数式编程之柯里化

    JS函数式编程之柯里化 为什么要了解柯里化 柯里化是函数式编程必须要使用的. 这里我们就先介绍下什么是柯里化, 然...

  • swift 柯里化

    swift 柯里化 柯里化 1、什么是柯里化? 柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一...

  • [译]JavaScript中的函数柯里化

    原文 Currying in JS 函数柯里化 函数柯里化以Haskell Brooks Curry命名,柯里化是...

  • js柯里化

    标签: js柯里化 js柯里化 柯里化是什么在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成...

  • 手写简单.bind()实现

    手写一个实现柯里化的.bind() 柯里化:《函数柯里化小结》柯里化:前端开发者进阶之函数柯里化Currying ...

  • 什么是函数柯里化

    柯里化,即Currying,可以是函数变得更加灵活。我们可以一次性传入多个参数调用它;也可以只传入一部分参数来调用...

  • 什么是函数柯里化

    今天看了一个关于函数式编程的文档[https://llh911001.gitbooks.io/mostly-ade...

  • 柯里化函数与反柯里化函数

    什么是柯里化(currying) 柯里化是一个将多元函数转化为低元函数的操作过程,可以看做是多元函数的部分求值过程...

  • JS 函数柯里化的简单探究

    什么是柯里化? 柯里化(Currying)是一种对于函数的高阶转换,它指的是将一个函数从可调用的 fn(a, b,...

网友评论

      本文标题:大声告诉我什么是柯里化函数

      本文链接:https://www.haomeiwen.com/subject/ppbxfxtx.html