🎀 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);
@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;
}
multiply(2, 3, 4);
let mult2 = multiply(2);
let mult2and3 = mult2(3);
mult2and3(4);