Ich konnte withSource
nicht direkt verwenden, um nur die Quelle und den Wert zu drucken und den Wert zurückzugeben. Das Makro withSource
kann nicht vom selben Objekt selbst verwendet werden (ich kann also nicht einfach meine leicht modifizierte Version von withSource in dieser Datei hinzufügen) und ich kann withSource
nicht von einer Unterklasse von WithSourceHelper
aufrufen, was die Wiederverwendung einschränkt durch Vererbung.
Falls jemand interessiert ist, ist hier eine Ergänzung zu Senias Antwort, den Wert einfach mit der Quelle zu protokollieren und den Wert zurückzugeben, damit der Rest der Berechnung stattfinden kann.
%Vor% Ich definiere es dann als implizite Konvertierung für def p = macro Debug.logValueImpl[T]
. Ich kann dann so verwenden:
Der lustige Teil ist, dass ich es zweimal anwenden kann:
%Vor% Und es zeigt mir, was das Makro logValueImpl
gemacht hat:
Es scheint auch mit anderen Makros zu funktionieren:
%Vor% Noch interessanter, wenn ich showRaw
anstelle von show
verwende, kann ich sogar den Baum des erweiterten Makros sehen, was nützlich sein könnte, um herauszufinden, wie man andere Makros schreibt.