4

私はインターフェースを持っています:

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")

パラメータ フラグは名前を保持するはずですが、以前と同じ結果が得られます。

4

1 に答える 1