Angenommen, ich möchte Code umbrechen, der Ausnahmen mit einem try-catch-Block auslösen kann, der die Ausnahme protokolliert und fortsetzt. Etwas wie:
%Vor%Idealerweise würde ich gerne den Logger verwenden, der für das aufrufende Objekt definiert wurde, falls vorhanden (und falls nicht, einen Kompilierungsfehler erhalten). Ich würde gerne so etwas definieren:
%Vor%wo objectWithLogger im Client-Code irgendwie "magisch" zu "this" expandiert. Ist das (oder eine ähnliche Sache) möglich?
Debilskis Antwort wird funktionieren, aber ich bin mir nicht sicher, ob ich einen guten Grund sehe, hier einen Strukturtyp (dh { def logger: Logger }
) zu verwenden. Dies führt zu einem zusätzlichen Laufzeitaufwand, wenn logger
aufgerufen wird, da die Implementierung von Strukturtypen auf Reflektion beruht. Die loggingExceptions
-Methode ist eng mit der Protokollierung verbunden, also würde ich sie einfach Teil eines Logging-Merkmals machen: