Установить значение структуры для указанного объекта с линзой Ramda - PullRequest
0 голосов
/ 09 октября 2018

Для данного объектива:

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 с линзами?

1 Ответ

0 голосов
/ 09 октября 2018

Ну, это может быть чище:

const setObjFoo0 = R.set(foo0Lens, R.__, obj)

На мой взгляд, это лучше, если не использовать префикс R.:

const setObjFoo0 = set(foo0Lens, __, obj)

Там заполнитель выглядит какзаполнитель.

Были отдельные разговоры об удалении заполнителей из Рамды (отказ от ответственности: я один из авторов), но ничто не кажется неизбежным.И примеры, подобные этому, помогают утверждать, что иногда его использовать значительно чище.

...