zoukankan      html  css  js  c++  java
  • 函数柯里化curry

    一、什么是函数柯里化

    柯里化来源于偏应用函数
    偏函数一般也是会固定函数的几个参数,但是一般第一个参数为一个函数,作为被返回并执行的函数
    函数柯里化:就是把多参数函数分解为多return的单参数函数
    柯里化前
    function func (a, b, c){
      return a + b + c;
    }
    //柯里化为
    function func1 (a){
      return function (b){
        return function (c){
          return a + b + c;
        }
      }
    }
    //调用时
    func(1, 2, 3)//6
    func1(1)(2)(3);//6

    简单利用柯里化实现功能

    function sum() {
        console.log(arguments,'外部缓存')
        var _args = Array.from(arguments);//类数组转数组
        //将函数的参数缓存起来(必包)
        function _sumer() {
            _args.push(...arguments);//将多次传入的参数放到数组中
            return _sumer;
        }
        //实现业务功能:求和
        _sumer.toS = function() {
            return _args.reduce((acc,cur) => {
                return acc+cur;
            },0)
        }
        return _sumer;
    }
    console.log(sum(1,2)(3)(5).toS());//1,2参数传给sum  3,5参数传给_sumer函数

    二、柯里化的优缺点

    事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数, 得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种 对参数的“缓存”,是一种非常高效的编写函数的方法

  • 相关阅读:
    postgresql 2012 大会PPT下载 Joe
    Postgresql连接 Joe
    查看Postgresql的连接数 Joe
    greta使用
    CString GetFileDir(const CString& csFile)
    UnicodeToAnsi函数
    myeclipse优化方案
    bool CreatedMultipleDirectory( char* direct)
    LPWSTR GBK(LPCSTR plszUtf8, WCHAR* lpszGBK)
    真正整合资源的高手
  • 原文地址:https://www.cnblogs.com/emilyzz/p/15214666.html
Copyright © 2011-2022 走看看