我真的不明白为什么你不能使用TypeTag
对象本身,有人可以解释为什么下面的代码不起作用?我也问为什么TypeTag
对象不直接支持像=:=
这样的运算符。我知道这与typeOf[T]
函数有关,但令人沮丧的是我似乎无法直接获取它(例如myTT.typeOf
)
由于
import scala.reflect.runtime.universe._
object TestRun extends App {
class Matcher[T:TypeTag] {
def test[U](x: U)(implicit tag: TypeTag[U]) = {
val myTT = implicitly[TypeTag[T]]
println("=:=" + myTT =:= tag) //error
}
}
}
答案 0 :(得分:2)
您需要tpe
方法:
println("=:=" + (myTT.tpe =:= tag.tpe))
(由于+
的左关联性,你还需要另一组括号