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