Пожалуйста, объясните, как работает функция compose в приставке

compose Функция в Redux по большей части очень проста, и я понимаю, как ее использовать.

export default function compose(...funcs) {
  if (funcs.length === 0) {
    return arg => arg
  }

  if (funcs.length === 1) {
    return funcs[0]
  }

  return funcs.reduce((a, b) => (...args) => a(b(...args)))
}

Тем не менее, эта часть последнего кусочка кажется мне очень неясной:

funcs.reduce((a, b) => (...args) => a(b(...args)))

Что ...args часть? Я понимаю, что это параметры покоя, но к чему это относится? Откуда это?

1 ответ

Compose просто позволяет вам писать

compose(func1, func2, func3, func4)

вместо

func1(func2(func3(func4))))

В случае

funcs.reduce((a, b) => (...args) => a(b(...args))) 

.reduce является функцией массива, вы можете прочитать о функции Array Reduce

Возвращается

(...args) => a(b(...args);

и давая вам возможность передать некоторые параметры для вложенных функций.

например: это позволяет вам написать что-то вроде этого:

 nestedFunc = compose(func1, func2, func3);

 nestedFunc({key: value})

что приведет к

func1(func2(func3({key: value})))

Узнайте больше о функции составления

Другие вопросы по тегам