如何将多个输入传递给合成内部的函数?
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),并得出适当的标度?
答案 0 :(得分:4)
在R.com中,仅最右边的(底部)函数的Arity可以大于1。它接收传递给组合函数的参数,返回单个值,然后将其传递给函数的左侧,然后等等。
在您的情况下,您想转换scaleLinear
的参数,而不要对值应用多个函数。您可以通过应用R.useWith和一系列转换器来转换函数的参数:
const scale = R.useWith(scaleLinear, [getDomain, getRange, R.identity])
现在您可以像这样使用scale
:
scale(arr1, arr2, 10)