[英]Create object with Ramda
我想创建一个类似的函数,将以这种方式使用:
const objectCreator = createObject({
foo: functionFoo,
bar: functionBar
})
objectCreator(42) // => { foo: functionFoo(42), bar: functionBar(42) }
因此,想法是从应用于值的一组函数中创建一个对象。 例如,用例是从一个唯一的对象中提取不同的数据,然后将此函数放入管道中。
我可以手动创建这样的功能,但是在Ramda(或类似产品)中是否已经不存在此功能? 我不知道如何命名。
Map可以满足您的大部分需求,但前提是您必须在其中加上代码以输入正确的值。例如:
const createObject = specification => value => R.map(f => f(value), specification);
const objectCreator = createObject({
foo: val => val * 2,
bar: val => val + 1,
});
let result = objectCreator(42); // { foo: 84, bar: 43 }
或者,如果您希望将其咖喱处理(因此您可以同时或分别传入规范和值):
const createObject = R.curry((specification, value) => R.map(f => f(value), specification))
let result = createObject({
foo: val => val * 2,
bar: val => val + 1,
}, 42); // { foo: 84, bar: 43 }
编辑:
如果输入的顺序颠倒了(即先输入值,然后指定规格),则将更加简单:
const createObject = value => R.map(f => f(value))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.