ケースパラメータBla
をタイプパラメータA
とし、実行時にA
のタイプを知っています(info
フィールドに格納します)。ケースクラスのタグ
私の試みは以下の例に示されています。問題は、この例はコンパイルされないということです。私はval info=Run.paramInfo(this)
コメント際
case class Bla[A](){
val info=Run.paramInfo(this) // this does not compile
}
import scala.reflect.runtime.universe._
object Run extends App{
val x=Bla[Int]
def paramInfo[T](x:T)(implicit tag: TypeTag[T]): String = {
val targs = tag.tpe match { case TypeRef(_, _, args) => args }
val tinfo=s"type of $x has type arguments $targs"
println(tinfo)
tinfo
}
paramInfo(x)
}
しかしその後、プログラムが正常に動作して印刷:のBlaの
タイプは、()
(int)を引数リストを入力しているようにする方法はありますこの例はコンパイルしますか? (または他の方法で同じ目標を達成します。つまり、ケースクラスは型パラメータの型を自己認識していますか?)
ありがとうございました。 – jhegedus