我是柯里化(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/