0

私は次のように書こうとしています:

import scala.reflect.runtime.universe._

val value: Tree = /* some AST */
val tpe = typeOf(value)    // This should be the result type of the AST.
                           // This is pseudocode. What should
                           // actually go on this line?
q"""
type U = $tpe
val v: U = $value
"""

valueASTで表される値の型をキャプチャして、tpeに割り当てる必要がありUます。どうやってこれを行うのですか?

編集:型注釈を付けvalueて準引用符で照合することは、ここではオプションではありません。ユースケースは、 のような複雑な型を持つ Shapeless の拡張可能なレコードです。また、AST はプログラムによって生成され、リテラルではありません。String with labelled.KeyTag[1, String] :: Long with labelled.KeyTag[three, Long] :: HNilval ls = (1 ->> "two") :: ("three" ->> 4L) :: HNilvalue

4

2 に答える 2