2
好吧,我遇到這個問題的真正原因是我的ScalaTests無法編譯,因爲我定義了測試範圍內的一些類,這些類調用期望與TypeTag一起工作的另一個類文件。請注意,因爲B類在我的「測試」範圍內(假設這是一個scala測試調用),typetag不再可行。我懷疑也許我不應該在一個本地範圍內的匿名類上嘗試這個,但有人可以幫我理解嗎?由於類型標籤不能在代碼塊範圍內工作?
import scala.reflect.runtime.universe._
import scala.Symbol
class TypeTagger[T:TypeTag] {
val tt = typeTag[T]
}
object TypeTagger {
def apply[T]()(implicit tt:TypeTag[T]) = new TypeTagger[T]
}
object TestRunTypeTagger extends App {
class A
val test = new TypeTagger[A]
{
class B
val test2 = TypeTagger[B]() //fails
}
}
錯誤: 無對於B VAL測試2 = TypeTaggerB
^not enough arguments for method apply: (implicit tt:
reflect.runtime.universe.TypeTag[B])chorle.scala.testarea.TypeTagger[B] in object TypeTagger. Unspecified value parameter tt. val test2 = TypeTaggerB
^
感謝您發現這一點,我希望我能發現更多,但我不確定發生了什麼。你知道WeakTypeTags是否有任何運行時使用,或只是爲宏操作設計的? – LaloInDublin