浅谈柯里化

最近刷牛客网上的前端编程题,涉及到了柯里化这个函数概念。说实话之前我并没有听说过柯里化(简直太孤陋寡闻了),只知道闭包,于是通过几个大佬的博客了解到了这一概念,做此记录以便简单理解。

参考链接:https://cnodejs.org/topic/5884574e250bf4e2390e9e99

https://baijiahao.baidu.com/s?id=1595237626204124028&wfr=spider&for=pc

维基百科中关于其定义如下:

在计算机科学中,柯里化(Currying),又译为卡瑞化或加里化,是把接收多个参数的函数变换成接收一个单一参数(最初函数的第一个参数)的函数,并返回接受剩余的参数而且返回结果的新函数的技术。这个技术由克里斯托弗·斯特雷奇以逻辑学家哈斯凯尔·加里命名的。

现在我们举个例子来具体的解释一下以上的概念。

例如一个简单的加法函数:

  //函数定义

  function add(x,y){

    return x + y;

  }

  //函数调用

  add(3,5);//8

如果采用柯里化是怎么将接受两个参数的函数变成接受单一参数的函数呢,其实很简单如下:

  //函数表达式

  var add = function(x){

    return function(y){

      return x + y;

    }

  };

  //函数调用

  add(3)(5);

这样理解是不是就很简单了,其实实质就是闭包的概念。柯里化所要表达的是:如果你固定某些参数,你将得到接受剩余参数的一个函数,所以对于有两个变量的函数y^x,如果固定了y=2,则得到有一个变量的函数2^x。这就是求值策略中的部分求值策略

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值