zoukankan      html  css  js  c++  java
  • array curry


    title: 2019-06-09-array-curry
    date: 2019-06-09 17:47:33
    tags: curry call arguments
    categories: "2019-06"

    array curry

    将一个方法进行curry(颗粒化), 即比如一个方法接受三个参数, 那么现在通过调用三次的方式进行实现

    例如

    function test(a, b, c) {
        return a+b+c;
    }
    
    //正常调用
    test(1,2,3); //6
    
    testCurry(1)(2)(3);//6
    

    有一个方法, 比如 curry, 进行以下执行

    主要实现思路是将参数一次一次通过闭包进行记录, 然后通过比较最终调用原处的方法

    const testCurry = curry(test);
    
    function curry(fn, ...arg) {
        const len = fn.length;
        if (arg.length >= len) {
            return fn.call(null, ...arg);
        }
        return function(...arg2) {
            return curry(fn, ...arg2, ...arg);
        }
    }
    
    function curryWithArgument(fn) {
        const len = fn.length;
        const arg = Array.prototype.slice.call(arguments, 1);
        if (arg.length >= len) {
            return fn.call(null, ...arg);
        }
        return function() {
            const arg2 = arguments;
            return curry(fn, ...arg2, ...arg);
        }
    }
    
    
  • 相关阅读:
    解决粘包问题
    粘包问题
    模拟ssh功能
    套接字接上链接循环
    套接字加入通讯循环
    简单通信
    网络编程
    单例模式
    记录一下:chrome上,把网页保存为文件的插件
    centos6.5 64bit 实现root开机自动登录X桌面
  • 原文地址:https://www.cnblogs.com/asdfq/p/12454222.html
Copyright © 2011-2022 走看看