Frage

Ich schreibe ein Makro in Scala, aber wenn ich es aufrufe, erhalte ich die Fehlermeldung „Double akzeptiert keine Parameter“.Offensichtlich stimmt etwas nicht mit der Art und Weise, wie das Makro den AST erstellt.Wie kann ich das erweiterte Makro sehen?Gibt es eine Möglichkeit, die Makroimplementierung zur Laufzeit aufzurufen?

War es hilfreich?

Lösung

Bieten -Ymacro-debug-lite oder -Ymacro-debug-verbose Option für den Compiler.

Spontan wird die Detaillierung gedruckter ASTs durch geregelt -Yshow-trees-compact, -Yshow-trees-stringified, -Xprint-types, -uniqid Und -Yshow-symkinds.Sie können andere Edelsteine ​​finden, indem Sie rennen scala -X Und scala -Y (Oder Überprüfen der Quellen der Scala-Einstellungen unter https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala).

Auch wenn es sich im Wesentlichen um ein Makro handelt, verfügt die Verdinglichung über einen eigenen Ablaufverfolgungsmechanismus, der von konfiguriert werden kann -Yreify-copypaste Und -Yreify-debug.

Andere Tipps

Es gibt Makrocosms DeSugar , der zeigen kann, wie Ihr Quellcode, einschließlich, aber keine beschränkt auf Makros, in umgewandelt wird. generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top