javascript - Ramda compose 传递多个参数
问题描述
我们如何将多个输入传递给组合内的函数?
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。它接收传递给组合函数的参数,返回单个值,并将其传递给它左边的函数,依此类推。
在您的情况下,您想要转换 的参数scaleLinear
,而不是将多个函数应用于一个值。您可以通过应用R.useWith和一组转换器来转换函数的参数:
const scale = R.useWith(scaleLinear, [getDomain, getRange, R.identity])
现在你可以scale
像这样使用:
scale(arr1, arr2, 10)
推荐阅读
- testing - 如何从 ZeroCode 框架中使用 Kafka 主题
- python - 尝试更改上传图像函数名称 Django 时出现错误
- excel - 减少行数 - VBA Excel
- django - 我想从我的 django mobels 获取数据,但显示错误上下文必须是 dict 而不是 QuerySet
- sql - SQL 列不获取 NULL
- javascript - 将 SVG 作为 React 组件导入不适用于 Next.js
- angularjs - 以 1x 角度实现日期范围选择器
- hibernate - JPA Repository:设置符合条件的最新元素的字段
- reactjs - 反应生产构建未捕获的运行时错误:内存访问越界
- javascript - 生产中的下一个 js 动态路由返回 403 错误,但应该返回 404。可能是什么问题?