javascript - 在 JavaScript 中柯里化(Currying)日期时间

标签 javascript currying

我是柯里化(Currying)新手,但我有一个无法解决的问题。

function curry(func) {
    return date1=>{
        return date2=>{
            return date3=>{
                return func(date1,date2,date3);
            };
        };
    };
}



function format_date(a,b,c){
    return a+ "." + b +"."+c;
}

var date= curry(format_date);

console.log(date(1)(12)(2020));
console.log(date(1,12)(2020));
console.log(date(1)(12, 2020));
console.log(date(1,12, 2020));

所有日志的输出应该是 2020年12月12日 但我只得到第一个正确的其他返回 [Function(anonymous)]

最佳答案

您可以采用双柯里化(Currying)函数来移交收集的参数和参数。

此方法允许使用具有独立参数的日期

function curry(func) {
    const
        fn = p => (...args) => {
            const parameters = [...p, ...args];
            if (parameters.length >= func.length) return func(...parameters);
            return fn(parameters);
        };

    return fn([]);
}

function format_date(a, b, c) {
    return a + "." + b + "." + c;
}

var date = curry(format_date);

console.log(date(1)(12)(2020));
console.log(date(2, 12)(2020));
console.log(date(3)(12, 2020));
console.log(date(4, 12, 2020));

关于javascript - 在 JavaScript 中柯里化(Currying)日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70145025/

相关文章:

javascript - 在 setTimeout() 中使用一个变量来设置时间

javascript - 实现聊天机器人

javascript - 在 javascript 中使用柯里化(Currying)函数优于普通函数的优点

Haskell: `Map (a,b) c` 与 `Map a (Map b c)` 对比?

scala - 为什么柯里化(Currying)不适用于函数文字?

javascript - 如何在javascript中输出调用对象?

javascript - 我如何生成唯一标识符

javascript - 动态页面中的路径替换内容

c# - 为什么 C# 编译器不能从函数签名中推断泛型委托(delegate)?

scala - Scala 中多个参数列表和每个列表多个参数有什么区别?