スカラマクロを作成しています。スカラマクロは、指定された関数を調べて引数の名前と型を探します。スカラマクロ:関数参照の引数型
def hello(i: Int, s: String) = s + i
私はこのようなマクロを養う場合には、これまでの作品:
val args: TypeInfo = signature(hello _)
しかし、私はまた、元の関数への参照のみを供給することができるようにしたい:
def invokeMacro(f: (Int, String) => String) = signature(f)
invokeMacro(hello)
残念ながら、これは動作しません。マクロ の内側に元の関数「ハロー」のホールドを取得し、それが情報を入力します抽出することが可能であるならば、私は疑問に思う今
val typeInfo = TypeInfo(t.filter(_.isDef).collect {
case ValDef(_, name, typ, _) =>
name.decodedName.toString -> typ.tpe.toString
})
:ここ
は、私は、マクロ内の型情報を取得する方法です。 でマクロ内の情報を精査すると、デバッガは期待していたものを得られませんでした。
そうかもしれないが、そうでない場合は、どうしてですか?なぜですか?それが可能なら、どうですか?
それはうまく動作します。私は新鮮な名前を期待していただろう。 –