0
给出下面的数据结构如何使函数调用多个参数,所以不是F(X)(Y),你可以做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));
,并获得相同的结果(两个类别的阵列与IDS 1和4)
然而byLevel返回一个函数。我可以称它为
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));
正常工作和咖喱罚款。但是,它似乎不是“干净”的。
问题
是否有“Ramda”的方式使它这样我可以定义函数,这样我可以做f(x,y)
代替
你使用_one_参数传递给'curry'函数,所以'curry'不能使用_two_参数使它成为函数。所以这个变体似乎是正常的'R.curry((level,l)=> R.filter(o => o.ancestors.length == level,l))' – Grundy