← Усі задачіJavaScript · Middle
curry: каррування
Напишіть функцію curry(fn), яка перетворює функцію від кількох аргументів на ланцюжок викликів. Аргументи можна передавати по одному або групами: add(1)(2)(3), add(1, 2)(3) і add(1, 2, 3) дають те саме.
Коли аргументів набралося стільки, скільки оголошено в fn (fn.length), викликається сама fn. Частково застосовану функцію можна викликати багато разів.
Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (4)
const add = curry((a, b, c) => a + b + c); expect(add(1)(2)(3)).toBe(6);
const add = curry((a, b, c) => a + b + c); expect(add(1, 2)(3)).toBe(6); expect(add(1)(2, 3)).toBe(6); expect(add(1, 2, 3)).toBe(6);
const add = curry((a, b) => a + b); const add1 = add(1); expect(add1(10)).toBe(11); expect(add1(20)).toBe(21);
const join = curry((a, b, c) => [a, b, c].join('-')); expect(join('x')('y')('z')).toBe('x-y-z');