呼び出されたメソッドのパラメーターで使用される型パラメーターでTypeTags
のみ機能し、戻り値の型では機能しないようです。
scala> :paste
// Entering paste mode (ctrl-D to finish)
import scala.reflect.runtime.universe._
object Test {
def withParam[T: TypeTag](v: T): T = {
println(typeOf[T])
0.asInstanceOf[T]
}
def justReturn[T: TypeTag](): T = {
println(typeOf[T])
0.asInstanceOf[T]
}
}
// Exiting paste mode, now interpreting.
import scala.reflect.runtime.universe._
defined module Test
scala> val i: Int = Test.withParam(17)
Int
i: Int = 0
scala> val j: Int = Test.justReturn()
Nothing
j: Int = 0
これは 2.9 のマニフェストの動作と一致していますが、実行できない理由はありますか? また、この効果を達成する他の方法はありますか?