簡體   English   中英

使用Ramda鏡頭設置指定對象的結構值

[英]Set structure value for specified object with Ramda lens

鑒於這個鏡頭:

const obj = {
  foo: ['bar', 'qux']
}

const foo0Lens = R.lensPath(['foo', 0]);

R.setfoo第一個元素設置為變量對象上的指定值:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM