类型标签和比较操作符



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

(由于+的左结合性,还需要另一组括号)

相关内容

  • 没有找到相关文章

最新更新