我真的不明白为什么你不能用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
}
}
}
您需要tpe
方法:
println("=:=" + (myTT.tpe =:= tag.tpe))
(由于+
的左结合性,还需要另一组括号)