Ich möchte eine Log-Annotation Verwendung scala meta.Usage tun einfach wie:Wie bekomme ich einen Methodenrückgabetyp mit Scala-Meta-Annotation?
@Log
def f1(a: Int) {
Future(a + 1) //result is a Future
}
// after parsed ====>
def f1(a: Int) {
Future(a + 1).map{x =>
println(x)
x
}
}
Wie kann ich überprüfen, ob f1
eine Art Future[ _ ]
ist? Danke
Außerdem möchte ich keine Reflektion (Performance-Kosten) in Log
Annotation verwenden und ich denke, Methode Ergebnis Typ kann zur Kompilierzeit entschieden werden.
Ich bin unsicher, was Sie versuchen zu überprüfen, was soll @Log tun? Warum kann man nicht eine Funktion def wie 'def f1 [A] (a: Int) verwenden: Future [A] = ???' dann wird es Kompilierzeit fehlschlagen, wenn es keine Zukunft ist –
@ LeMoN.xaH, danke deinen Rat. Aber ich möchte das Ergebnis der Methode als Log-Information ausgeben. Wenn das Ergebnis "Zukunft" ist, sind die sinnvollen Dinge Ausdruck "Zukunft" ist der Wert eher Zukunft selbst. :-) Also benutze ich Macro eine 'map' Operation, wenn die Methode einen Future Wert zurückgibt. – LoranceChen
Sie können separate Protokollanmerkungen für synchrone und asynchrone Methoden erstellen. Bitte beachten Sie die folgende Implementierung, die wahrscheinlich Ihre Usecase abdecken: https://github.com/euengarkusha/macroLogging –