@campus1

Как реализовать функцию, которая суммирует аргументы и может быть вызвана в одном месте многократно?

Есть такая задачка:

sum(1,2,3) -> 6
sum(1)(2)(3) -> 6
sum(1,2)(3) -> 6

Ума не приложу как ее решить.
  • Вопрос задан
  • 276 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
function sum(...values) {
  const s = values.reduce((acc, n) => acc + n, 0);
  const f = sum.bind(null, s);
  f.valueOf = () => s;
  return f;
}
Ответ написан
zendor
@zendor
const sum = (...x) =>
  Object.assign(function f(...y) { return sum(...y, +f); }, {valueOf: () => x.reduce((a, c) => a + c, 0)});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы