鉴于这个镜头:
const obj = {
foo: ['bar', 'qux']
}
const foo0Lens = R.lensPath(['foo', 0]);
R.set
将foo
第一个元素设置为变量对象上的指定值:R.set(foo0Lens, 'baz')(obj);
虽然我需要一个将指定对象上的
foo
第一个元素设置为变量值的函数:const setObjFoo0 = R.flip(R.set(foo0Lens))(obj);
setObjFoo0('baz');
R.flip
可以完成工作,但参数慢动会使代码的表达性降低。它应该怎么做?我是否缺少有关Ramda镜头的信息?还有其他方法可以方便地使用镜头创建
setObjFoo0
吗? 最佳答案
好吧,这可能更干净:
const setObjFoo0 = R.set(foo0Lens, R.__, obj)
当不使用
R.
前缀时,它更容易理解:const setObjFoo0 = set(foo0Lens, __, obj)
在那里,占位符看起来像一个占位符。
关于从Ramda中删除占位符的讨论零星(免责声明:我是作者之一),但似乎没有什么迫在眉睫。像这样的示例有助于说明使用它有时会更干净。