Код Senior Реализация с нуля обновлено

Калькулятор цепочкой

Условие

chain({ sum, minus, double }) возвращает объект, у которого есть все переданные функции и метод execute(). Каждый вызов применяет функцию к накопленному значению и возвращает объект для продолжения. Первый вызов задаёт начальное значение из своих аргументов. execute() отдаёт результат и обнуляет цепочку.

Что проверяют тесты

  • первый вызов задаёт значение

  • продолжение цепочки

  • унарные функции

  • execute обнуляет

  • смешанная цепочка

Как подойти

Динамическое построение API по словарю функций плюс текучий интерфейс. Ключевое решение - как отличить первый вызов: признак «значение ещё не задано» (null) читается лучше, чем счётчик. Накопитель подставляется первым аргументом, поэтому функции пишутся в обычном виде и ничего не знают о цепочке. execute обнуляет состояние, чтобы объект можно было переиспользовать.

Подсказки: 3
  1. Объект строится динамически по переданным функциям.
  2. Накопленное значение подставляется первым аргументом, кроме самого первого вызова.
  3. Каждый метод возвращает тот же объект - иначе цепочка оборвётся.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.