- Реализуйте функцию
seq(...args)
с использованием замыканий и чеининга, которая может быть вызвана по цепочке с произвольным количеством функций, а первый вызов со значением типаNumber
приведет к исполнению переданных ранее функций и возвращаемый результат должен быть, как в приведенных примерах:
seq(x => x + 7)
(x => x * 2)(5)
// Результат: 17
seq(x => x * 2)
(x => x + 7)(5)
// Результат: 24
seq(x => x + 1)
(x => x * 2)
(x => x / 3)
(x => x - 4)(7)
// Результат: 3
- Реализуйте функцию
array()
создающую функциональный объект, который содержит массив в своем замыкании и обеспечивает следующий интерфейс доступа к нему:
- Создание нового экземпляра
const a = array();
- Получение элемента по индексу
a(i)
- Добавление элемента в конец
a.push(value)
- Удаление последнего элемента и получение его значения
a.pop()
Пример использования:
const arr = array();
arr.push('first');
arr.push('second');
arr.push('third');
console.log(arr(0)); // Выводит: first
console.log(arr(1)); // Выводит: second
console.log(arr(2)); // Выводит: third
console.log(arr.pop()); // Выводит: third
console.log(arr.pop()); // Выводит: second
console.log(arr.pop()); // Выводит: first
console.log(arr.pop()); // Выводит: undefined