TypeTag和比较运算符?

时间:2014-06-28 04:46:52

标签: scala reflection

我真的不明白为什么你不能使用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
    }
  }
}

1 个答案:

答案 0 :(得分:2)

您需要tpe方法:

println("=:=" + (myTT.tpe =:= tag.tpe))

(由于+的左关联性,你还需要另一组括号