Real Programmers Implement Functions On Top Of Classes
Real Programmers Implement Functions On Top Of Classes
class BaseFunction {
static #allowInstantiation = false;
constructor(...args) {
if (!BaseFunction.#allowInstantiation) {
throw new Error(
"Why are you trying to use 'new'? Classes are so 2015! Use our fancy 'run' method instead!"
);
}
for (const [name, validator] of this.parameters()) {
this[name] = validator(args.shift());
}
}
parameters() {
return [];
}
body() {
return undefined;
}
static run(...args) {
BaseFunction.#allowInstantiation = true;
const instance = new this(...args);
BaseFunction.#allowInstantiation = false;
return instance.body();
}
}
class Add extends BaseFunction {
parameters() {
return [
["a", (x) => Number(x)],
["b", (x) => Number(x)],
];
}
body() {
return this.a + this.b;
}
}
console.log(Add.run(5, 3)); // 8
You're viewing a single thread.
View all comments
26
comments
What theme are you using, i like it!
3 0 ReplyLooks like Catppuccin Mocha
4 0 ReplyActually now that check it again its not quite right for mocha. But it's close!
2 0 ReplyYou're right, the background is too dark. Probably crust instead of base. Maybe it was customised or created improperly.
But I'm fairly confident that the palette is Catppuccin, probably Mocha.2 0 ReplyI can confirm it's Catppuccin Mocha. I am not currently aware of the background color issue, but I'll look into the matter soon. Thanks for letting me know. Also how dare you. But thanks.
2 0 Reply
Thanks!
2 0 Reply
You've viewed 26 comments.
Scroll to top