NO.4 js函数科里化

作者: 山豆山豆 | 来源:发表于2020-10-15 18:58 被阅读0次

在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。
一个函数例如

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

// 执行 add 函数,一次传入两个参数即可

  add(1, 2) // 3

// 假设有一个 curry 函数可以做到柯里化

var addCurry = curry(add);
addCurry(1)(2) // 3

简单实现一个给定一致的函数 例如上面的add

function add(x){
    return function(y){
            return x+y
    }
}

//  add(2)(3)  =5

上面这种 太固定 过着太局限了
我们可以优化一下 可以实现 add(1,3,4)(5) 这种的

function add(...arg){
    let temp=[].concat(arg)
    let fn=function(...arg2){
         temp=temp.concat(arg2)
        return fn
    }
    fn.toString=function(){
        console.log(temp)
        let res=temp.reduce((x,y)=>x+y,0)
        return res
    }
    return fn
    
}
console.log(String(add(1,3)(2)))

上面这种用到了 rest参数 以及 Array.reduce() 方法的使用

我们还可以写一个函数来处理 需要科里化的 函数

function trueCurrying(fn, ...args) {

    if (args.length >= fn.length) {

        return fn(...args)

    }

    return function (...args2) {

        return trueCurrying(fn, ...args, ...args2)

    }
}
let curAdd=trueCurrying(add)
curAdd(1)(3)(5)

相关文章

  • NO.4 js函数科里化

    在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。一个函数例如 //...

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

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

  • js柯里化

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

  • JS_函数柯里化

    JS_函数柯里化 与函数绑定密切相关的主体是函数柯里化(function currying),它用于创建已经设置好...

  • java8-科里化与设计模式

    科里化 常用于单位转换:科里化是一种将具备2个参数(比如,x和y)的函数f转化为使用一个参数的函数g,并且这个函数...

  • JS函数柯里化

    函数柯里化:提高函数的适用性,同时降低函数的通用性;其实现方式就是固定一些可以预期的参数,然后返回一个特定的函数 ...

  • js函数柯里化

    什么是函数柯里化? 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函...

  • JS函数柯里化

    什么是柯里化? 维基百科上说道:柯里化,英语:Currying(果然是满满的英译中的既视感),是把接受多个参数的函...

  • JS函数柯里化

    首先看看柯里化到底是什么? 维基百科上说道:柯里化,英语:Currying(果然是满满的英译中的既视感),是把接受...

  • Js函数柯里化

    柯里化函数用来干嘛? 用来固定某个函数的一些参数,得到该函数剩余参数的一个新函数,如果没有剩余参数,则调用自己。 ...

网友评论

    本文标题:NO.4 js函数科里化

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