Я новичок в функциональном программировании и задаю вопрос о трубе.Как реализовать канал, когда родительская функция получает разные аргументы
Скажем, у меня есть следующие функции:
const modifyArr = R.curry((i, newValue, arr) =>
Object.assign([], arr, {[i]: newValue}))
Эта функция изменит значение Массив по заданному индексу.
Теперь я хочу использовать эту функцию дважды (с трубой), чтобы реализовать обмен между двумя элементами массива.
Я не могу понять, как его написать. Это то, что я получил:
const swap = (arr, a, b) =>
R.pipe(modifyArr(b, arr[a], modifyArr(a, arr[b])))
Обратите внимание, что кэрри версия modifyArr (после получения двух аргументов) ожидает массив, но я передаю 3 аргумента в функции подкачки.
Как использовать трубку, где моя родительская функция получает разные аргументы, чем первая функция в трубе?
Спасибо.
Вы не можете поменять так, значение в один индекс должен быть хранить в переменной первого или вы получите другое значение дважды! –
@ibrahimmahrir На самом деле он должен работать, учитывая порядок оценки аргументов в JS, но это очень запутанно. – Bergi