[英]Set structure value for specified object with Ramda lens
鑒於這個鏡頭:
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
使用鏡頭創建setObjFoo0
嗎?
好吧,這可能更干凈:
const setObjFoo0 = R.set(foo0Lens, R.__, obj)
當不使用R.
前綴時,它更容易理解:
const setObjFoo0 = set(foo0Lens, __, obj)
在那里,占位符看起來像一個占位符。
關於從Ramda中刪除占位符的討論零星(免責聲明:我是作者之一),但似乎沒有什么迫在眉睫。 像這樣的示例有助於說明使用它有時會更干凈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.