Kapitel 24. Metaprogrammierung: Makros und Reflexion

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Metaprogrammierung ist Programmierung, die Programme als Daten manipuliert. In manchen Sprachen ist der Unterschied zwischen Programmierung und Metaprogrammierung gar nicht so groß. Lisp-Dialekte zum Beispiel verwenden die gleiche S-Ausdruck-Darstellung für Code und Daten, eine Eigenschaft, die Homoikonizität genannt wird. Dynamisch typisierte Sprachen wie Python und Ruby machen es einfach, das Programm mit anderem Code zu manipulieren, was manchmal spöttisch " Monkey Patching" genannt wird. In statisch typisierten Sprachen wie Java und Scala ist die Metaprogrammierung eingeschränkter und weniger verbreitet. Sie ist immer noch nützlich, um viele fortgeschrittene Designprobleme zu lösen, aber es ist mehr Formalität erforderlich, um die Manipulationen zur Kompilierzeit von denen zur Laufzeit zu trennen.

Metaprogrammierung gibt es in vielen Formen. Das Wort Reflexion bezieht sich auf die Introspektion von Code zur Laufzeit, z. B. indem ein Wert oder Typ nach Metadaten über sich selbst gefragt wird. Zu den Metadaten gehören normalerweise Details über den Typ, die Methoden und Felder usw.

Scala-Makros funktionieren wie eingeschränkte Compiler-Plug-ins, weil sie den abstrakten Syntaxbaum (AST) manipulieren, der aus dem geparsten Quellcode erzeugt wird. Makros werden aufgerufen, um den AST vor den abschließenden ...

Get Scala programmieren, 3. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.