Калькулятор цепочкой
Условие
chain({ sum, minus, double }) возвращает объект, у которого есть все переданные функции и метод execute(). Каждый вызов применяет функцию к накопленному значению и возвращает объект для продолжения. Первый вызов задаёт начальное значение из своих аргументов. execute() отдаёт результат и обнуляет цепочку.
Что проверяют тесты
первый вызов задаёт значение
продолжение цепочки
унарные функции
execute обнуляет
смешанная цепочка
Как подойти
Динамическое построение API по словарю функций плюс текучий интерфейс. Ключевое решение - как отличить первый вызов: признак «значение ещё не задано» (null) читается лучше, чем счётчик. Накопитель подставляется первым аргументом, поэтому функции пишутся в обычном виде и ничего не знают о цепочке. execute обнуляет состояние, чтобы объект можно было переиспользовать.
Подсказки: 3
- Объект строится динамически по переданным функциям.
- Накопленное значение подставляется первым аргументом, кроме самого первого вызова.
- Каждый метод возвращает тот же объект - иначе цепочка оборвётся.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.