函数式编程之函数柯里化。

发布时间:2024年01月24日

一、定义

? ? ? ? 柯里化(currying)指的是将一个多个参数的函数拆分成一系列函数,每个拆分后的函数都只接受一个参数

function add(a,b){
    return a + b
}

add(1,2)//3

?上面代码中,函数add接受两个参数a 和 b。

柯里化就是将上面的函数拆分成两个函数,每个函数都只接受一个参数。

function add(a){
    return function(b){
        return a + b
    }
}

add(1)(2) //3

//采用箭头函数
const add = x => y => x + y

const sum = add(1)(2) //3

二、柯里化的原理

? ? ? ? 主要是借助闭包和函数的嵌套实现的。

????????利用柯里化的思想,把一个接收多个参数的函数改造成多个函数,我们可以把不变的参数固定下来,变动的参数抽象到外部,由用户传入。

三、柯里化通用形式

? ? ? ? 上面的柯里化函数只能接收有限的参数,并不能通用。

const curry = (fn,...args) => 
        fn.lenth <= args.lenth
            ? fn(...args)
            : curry.bind(null,fn,...args)

curry.bind会返回新的函数,并把传入的参数传入返回的新的函数中

虽然这里没有显式使用命名函数进行递归,但通过 bind 方法的嵌套调用,实际上达到了递归的效果。

文章来源:https://blog.csdn.net/weixin_45345234/article/details/135819508
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。