我希望做一個日誌註釋使用Scala的meta.Usage簡單:如何獲得一個帶有Scala元註釋的方法返回類型?
@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
}
}
我如何檢查是否f1
是Future[ _ ]
類型?由於
再說,我不想使用反射(性能爲代價)在Log
註釋,我認爲方法的結果類型可以在編譯時決定。
我不確定你在檢查什麼是@Log應該做的事情?爲什麼你不能使用像def f1 [A](a:Int):Future [A] = ???這樣的函數def,那麼當它不是未來 –
@ LeMoN.xaH時,編譯時會失敗,謝謝你的建議。但我想要做的是將方法的結果作爲日誌信息打印出來。如果結果是「未來」,有意義的事情是印刷「未來」的價值而不是未來本身。 :-)因此,如果方法返回Future值,我使用宏做一個'map'操作。 – LoranceChen
您可以爲同步和異步方法創建單獨的日誌註釋。 請考慮以下的實現,可能會覆蓋你的用例: https://github.com/eugengarkusha/macroLogging –