私のように、単純なログ注釈使用Scalaのmeta.Usageを行いたい:f1
はFuture[ _ ]
タイプであればスカラーメタアノテーションを使用してメソッドの戻り値を取得する方法は?
@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
}
}
どうすれば確認できますか?ありがとう
また、Log
注釈では反映(パフォーマンスコスト)を使用したくないので、コンパイル時にメソッドの結果の型を判断できると思います。
この@Logが何をすべきかを確認しようとしていますか?なぜdef f1 [A](a:Int):Future [A] = ??? 'のような関数defを使用することができないのですが、将来は –
@ LeMoN.xaHの時にコンパイルに失敗します。しかし、私がしたいのは、メソッドの結果をログ情報として出力することです。結果が「未来」である場合、有意義なことは未来そのものの価値を印刷することである。 :-)メソッドが未来の値を返すならば、マクロを 'map'演算を使って行います。 – LoranceChen
syncメソッドとasyncメソッドに対して別々のログ注釈を作成することができます。 あなたのユースケースをカバーする可能性のある次の実装を考慮してください: https://github.com/eugengarkusha/macroLogging –