5

たとえば、マクロの呼び出しサイトでアクセス可能なすべての値とそのタイプを取得するには?または、少なくとも現在のクラスの値だけですか?例えば:

class A {
  val v1 = 10
  var v2 = "2"

  def m {
    val m3 = true

    // Here I would like to get information that v1: Int, v2: String and
    // v3: Boolean are available
    macroInvocation() 
  }
}

コンテキストとユニバースを調べましたが、適切な方法が見つかりませんでした。

私がこれまでに見つけた唯一の解決策は、マクロを囲むクラス/メソッドを(コンテキストを介して)取得し、ツリーを検索することです。

4

1 に答える 1

2

私がこれまでに見つけた唯一の解決策は、マクロを囲むクラス/メソッドを(コンテキストを介して)取得し、ツリーを検索することです。

宣言されたフィールドを抽出するために、実際にAST自体を検査しているということだと思います。あなたはそれをする必要はありません。cがあなたのContext価値であるなら、あなたはただすることができます:

c.enclosingClass.symbol.typeSignature.members
于 2013-03-12T22:51:12.340 に答える