JavaScript curry function

后端 未结 2 1685
遇见更好的自我
遇见更好的自我 2020-12-14 21:25

I have implemented a curry function this way:

function curry (fn) {
    var slice = Array.prototype.slice,
        args = slice.apply(arguments,         


        
相关标签:
2条回答
  • 2020-12-14 21:43

    You're missing a return in your curry function.

    I.e.

    return function () {
        return fn.apply(null, args.concat(slice.apply(arguments)));
    };
    

    That seems to work :)

    0 讨论(0)
  • 2020-12-14 21:46

    This is an example of curry function:

    function curry(func) {
        var initial_args = [].slice.apply(arguments, [1]);
        var func_args_length = func.length;
    
        function curried(args) {
            if (args.length >= func_args_length) {
                return func.apply(null, args);
            }
    
            return function () {
                return curried(args.concat([].slice.apply(arguments)));
            };
        }
    
        return curried(initial_args);
    }
    

    This curry function creates a curried version of any function. You can partially apply parameters to the new function. For each partial application, it will return a function that takes the rest of the parameters. Once all parameters of the original function are applied, it will return a value.

    0 讨论(0)
提交回复
热议问题