私はインターフェースを持っています:
trait MyInterface {
def doSomething(usefulName : Int) : Unit
}
インターフェイスのメソッドを反復処理し、メソッド名とパラメーターを処理するマクロがあります。次のようにしてメソッド名にアクセスします。
val tpe = typeOf[MyInterface]
// Get lists of parameter names for each method
val listOfParamLists = tpe.decls
.filter(_.isMethod)
.map(_.asMethod.paramLists.head.map(sym => sym.asTerm.name))
doSomething
のパラメータの名前を出力すると、usefulName
になりx$1
ました。これはなぜですか? 元のパラメーター名を保持する方法はありますか?
私は scala バージョン 2.11.8、macros paradise バージョン 2.1.0、および blackbox コンテキストを使用しています。
インターフェイスは、実際には私が管理する別の sbt プロジェクトの Java ソースです。私はコンパイルしようとしました:
javacOptions in (Compile, compile) ++= Seq("-target", "1.8", "-source", "1.8", "-parameters")
パラメータ フラグは名前を保持するはずですが、以前と同じ結果が得られます。