🎀 Dekoratory

Dekoratory modyfikujÄ… zachowanie funkcji lub klas.

Podstawowy dekorator

fn logged(f) { return fn(...args) { print("Calling with:", args); let result = f(...args); print("Result:", result); return result; }; } @logged fn add(a, b) { return a + b; } add(2, 3); // "Calling with: [2, 3]" // "Result: 5"

@memoize

fn memoize(f) { let cache = {}; return fn(n) { let key = toString(n); if (cache[key] != null) return cache[key]; let result = f(n); cache[key] = result; return result; }; } @memoize fn factorial(n) { if (n <= 1) return 1; return n * factorial(n - 1); }

@curry

@curry fn multiply(a, b, c) { return a * b * c; } // Można wywołać z wszystkimi argumentami multiply(2, 3, 4); // 24 // Lub częściowo let mult2 = multiply(2); let mult2and3 = mult2(3); mult2and3(4); // 24