Ramda compose 传递多个参数
Ramda compose passing multiple arguments
我们如何将多个输入传递给组合内部的一个函数?
const scaleLinear = R.curry((domain,range,t)=>{
let [a,b] = domain,
[c,d] = range;
return (1 - (t-a)/(b-a))*c + (t-a)(b-a)*d;
//getDomain: arr1 -> [xmin,xmax]
//getRange: arr2 -> [ymin,ymax]
const scale = R.compose(scaleLinear, getDomain, getRange);
显然上面的方法行不通,但是有什么替代方法可以让我最终传入 2 条数据 (arr1,arr2),并得到适当的比例?
在R.compose中,只有最右边(底部)函数的元数可以大于1。它接收传递给组合函数的参数,returns单个值,并将其传递到它左边的函数,依此类推。
在您的情况下,您想要转换 scaleLinear
的参数,而不是将多个函数应用于一个值。您可以通过应用 R.useWith 和转换器数组来转换函数的参数:
const scale = R.useWith(scaleLinear, [getDomain, getRange, R.identity])
现在您可以像这样使用 scale
:
scale(arr1, arr2, 10)
我们如何将多个输入传递给组合内部的一个函数?
const scaleLinear = R.curry((domain,range,t)=>{
let [a,b] = domain,
[c,d] = range;
return (1 - (t-a)/(b-a))*c + (t-a)(b-a)*d;
//getDomain: arr1 -> [xmin,xmax]
//getRange: arr2 -> [ymin,ymax]
const scale = R.compose(scaleLinear, getDomain, getRange);
显然上面的方法行不通,但是有什么替代方法可以让我最终传入 2 条数据 (arr1,arr2),并得到适当的比例?
在R.compose中,只有最右边(底部)函数的元数可以大于1。它接收传递给组合函数的参数,returns单个值,并将其传递到它左边的函数,依此类推。
在您的情况下,您想要转换 scaleLinear
的参数,而不是将多个函数应用于一个值。您可以通过应用 R.useWith 和转换器数组来转换函数的参数:
const scale = R.useWith(scaleLinear, [getDomain, getRange, R.identity])
现在您可以像这样使用 scale
:
scale(arr1, arr2, 10)