javascript 中的柯里化日期时间
Currying date time in javascript
我是柯里化的新手,但我有一个我无法解决的问题。
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));
所有日志的输出应该是
1.12.2020
但我只得到第一个正确的其他 return [Function(anonymous)]
你可以采用双柯里化函数来传递收集到的参数和参数。
这种方法允许使用带有独立参数的date
。
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));
柯里化是函数式编程的一个非常重要的方面。曾几何时,JS 被设置为在功能方向上取得进展,但随后头部发生了变化。连同它的所有功能,它将再次在命令式路径上发展。人们几乎忘记了在 JS 中获取函数。现在你看到每个人都拥抱 async await
而不是一元承诺。伤心。
随便;回到你的问题,当然在 JS 中你可以柯里化一个函数,即使它有无限数量的参数。
var curry = f => f.length ? (...a) => curry(f.bind(f,...a)) : f(),
就是这样..!
如果你要柯里化的函数是;
function format_date(a,b,c){
return a+ "." + b +"."+c;
}
那就让我们看看他们的行动吧;
function format_date(a, b, c) {
return a + "." + b + "." + c;
}
var curry = f => f.length ? (...a) => curry(f.bind(f,...a)) : f(),
fDate = curry(format_date);
console.log(fDate(2021)(11)(30));
我是柯里化的新手,但我有一个我无法解决的问题。
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));
所有日志的输出应该是
1.12.2020
但我只得到第一个正确的其他 return [Function(anonymous)]
你可以采用双柯里化函数来传递收集到的参数和参数。
这种方法允许使用带有独立参数的date
。
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));
柯里化是函数式编程的一个非常重要的方面。曾几何时,JS 被设置为在功能方向上取得进展,但随后头部发生了变化。连同它的所有功能,它将再次在命令式路径上发展。人们几乎忘记了在 JS 中获取函数。现在你看到每个人都拥抱 async await
而不是一元承诺。伤心。
随便;回到你的问题,当然在 JS 中你可以柯里化一个函数,即使它有无限数量的参数。
var curry = f => f.length ? (...a) => curry(f.bind(f,...a)) : f(),
就是这样..!
如果你要柯里化的函数是;
function format_date(a,b,c){
return a+ "." + b +"."+c;
}
那就让我们看看他们的行动吧;
function format_date(a, b, c) {
return a + "." + b + "." + c;
}
var curry = f => f.length ? (...a) => curry(f.bind(f,...a)) : f(),
fDate = curry(format_date);
console.log(fDate(2021)(11)(30));