Power Features
Advanced
18 min
Makros
Ein Makro ist ein Compiler-Werkzeug: Es verändert Code, bevor daraus ein Programm gebaut wird.
01
Lesson
Makros einfach erklärt
Stell dir vor, du schreibst eine Notiz an den Compiler: “Pack vor diese Methode bitte Logging.”
Das Makro nimmt diese Notiz und baut echten Code daraus. Danach kompiliert Emerald den erweiterten Code.
02
Lesson
Makro auf Methode
macro Logged on Method bedeutet: Dieses Makro darf Methoden verändern.
macro Logged on Method {
StatementAST entry = quote stmt {
println("enter");
};
method.body.prepend(entry);
}
public class Calculator {
@Logged
public Int square(Int value) {
return value * value;
}
}
03
Lesson
quote und unquote
quote heißt: “Behandle diesen Code als AST-Vorlage.”
$(...) heißt: “Setze hier dynamisch etwas ein.”
macro AddDynamicLog on Method {
ExpressionAST message = Expr::str("dynamic " + method.name);
StatementAST entry = quote stmt {
println($(message));
};
method.body.prepend(entry);
}