← Wszystkie zadaniaJavaScript · Middle
curry: currying
Napisz funkcję curry(fn), która zamienia funkcję wielu argumentów w łańcuch wywołań. Argumenty można przekazywać pojedynczo lub grupami: add(1)(2)(3), add(1, 2)(3) i add(1, 2, 3) dają ten sam wynik.
Gdy zbierze się tyle argumentów, ile deklaruje fn (fn.length), wywoływana jest sama fn. Częściowo zastosowaną funkcję można wywoływać wiele razy.
Ctrl+Enter uruchamia testy. Tab robi wcięcie; aby wyjść z edytora klawiaturą, naciśnij Esc, a potem Tab. Kod zapisuje się w tej przeglądarce.
Testy (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');