2014-06-28 211 views
0

我真的不明白爲什麼你不能使用TypeTag對象本身,有人可以解釋爲什麼下面的代碼不起作用嗎?我也在問爲什麼TypeTag對象不直接支持=:=等運營商。我知道這事做與typeOf[T]功能,但令人沮喪的我似乎無法抓住這個直接或者(例如myTT.typeOfTypeTag和比較運算符?

感謝

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 
    } 
    } 
} 

回答

2

您需要tpe方法:

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

(因爲+的左關聯性,您還需要另一組圓括號)

+0

謝謝,你有嗎?關於tpe對象與TypeTag本身的區別如何?如果我們立即使用tpe,我不明白typetag類的重點 – LaloInDublin