Wie bekomme ich ein Scala-Makro, um einen Methodenaufruf zu ersetzen?
Mein Ziel ist es, ein Merkmal namens ToStringAdder
zu erstellen. Angenommen, ich habe ein Objekt x
mit diesem Merkmal, dann möchte ich, wenn ich x.add(any)
aufrufe, dass das Makro tatsächlich x.add(any, string)
aufruft, wobei die Zeichenkette eine Zeichenkette des AST ist. (Dies ist so, dass ich nette tostring
haben kann, wenn 'any' eine Funktion ist).
Mit Ausnahme von Expecty verwenden alle diese Beispiele, die ich gesehen habe, effektiv statische Methodenaufrufe: das Objekt, auf dem das Makro aufgerufen wird, wird nicht verwendet. Expecty hat die folgende Methode, die mir einen Hinweis darauf gibt, wie man das 'implizite Dies' erkennen kann, aber ich konnte keinen Weg finden, es in einem Anruf von retify zu referenzieren.
%Vor%Wie gehe ich vor, den Aufruf des Objekts zu ersetzen, an dem das Makro aufgerufen wurde. Der Code, den ich im Moment habe, ist unten, und es ist der Code im Rufify-Aufruf, der sortiert werden muss
%Vor%Tags und Links scala scala-macros