← Alle AufgabenJavaScript · Middle
curry: Currying
Schreib eine Funktion curry(fn), die eine Funktion mit mehreren Argumenten in eine Kette von Aufrufen verwandelt. Argumente können einzeln oder in Gruppen übergeben werden: add(1)(2)(3), add(1, 2)(3) und add(1, 2, 3) liefern alle dasselbe Ergebnis.
Sobald so viele Argumente gesammelt sind, wie fn deklariert (fn.length), wird fn selbst aufgerufen. Eine teilweise angewandte Funktion lässt sich viele Male aufrufen.
Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
Tests (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');