如何使函数可以使用多个参数调用,因此您可以使用 f(x,y) 而不是 f(x)(y)
How to make functions callable with multiple parameters, so instead of f(x)(y) you can do f(x,y)
给定以下数据结构
var categories = [
{_id: 1, order: 0, ancestors: []},
{_id: 2, order: 0, ancestors: [1]},
{_id: 3, order: 0, ancestors: [1]},
{_id: 4, order: 0, ancestors: []},
{_id: 5, order: 0, ancestors: [4]},
]
和函数
var byLevel = R.curry((level) => R.filter(o => o.ancestors.length == level))
var levelZero = byLevel(0);
我希望能够像这样调用这两个:-
console.log(byLevel(0,categories));
console.log(levelZero(categories));
并得到相同的结果(id 为 1 和 4 的两个类别的数组)
不过按级别returns一个函数。我可以这样称呼它
console.log(byLevel(0)(categories));
它做我想做的事。但是如果我像这样写 byLevel :-
var byLevel = R.curry((level, l) => R.filter(o => o.ancestors.length == level, l))
然后
console.log(byLevel(0,categories));
工作正常,咖喱也很好。但是,好像不像"clean".
问题
有没有 "Ramda" 方法来实现,这样我就可以定义函数,这样我就可以 f(x,y)
而不是 f(x)(y)
我想这就是全部了:
var byLevel = R.curry((level, categories) =>
R.filter(o => o.ancestors.length == level, categories)
);
如果您想柯里化一个函数以允许自己以这种方式提供参数,则必须列出它们。
给定以下数据结构
var categories = [
{_id: 1, order: 0, ancestors: []},
{_id: 2, order: 0, ancestors: [1]},
{_id: 3, order: 0, ancestors: [1]},
{_id: 4, order: 0, ancestors: []},
{_id: 5, order: 0, ancestors: [4]},
]
和函数
var byLevel = R.curry((level) => R.filter(o => o.ancestors.length == level))
var levelZero = byLevel(0);
我希望能够像这样调用这两个:-
console.log(byLevel(0,categories));
console.log(levelZero(categories));
并得到相同的结果(id 为 1 和 4 的两个类别的数组)
不过按级别returns一个函数。我可以这样称呼它
console.log(byLevel(0)(categories));
它做我想做的事。但是如果我像这样写 byLevel :-
var byLevel = R.curry((level, l) => R.filter(o => o.ancestors.length == level, l))
然后
console.log(byLevel(0,categories));
工作正常,咖喱也很好。但是,好像不像"clean".
问题
有没有 "Ramda" 方法来实现,这样我就可以定义函数,这样我就可以 f(x,y)
而不是 f(x)(y)
我想这就是全部了:
var byLevel = R.curry((level, categories) =>
R.filter(o => o.ancestors.length == level, categories)
);
如果您想柯里化一个函数以允许自己以这种方式提供参数,则必须列出它们。